質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

2回答

819閲覧

【VB.NET】文字列置換の方法が分からない

obon_ne

総合スコア12

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2019/07/23 06:30

文字列置換ツールを作成しているのですが
正規表現置換でマッチした文字列を置換時に再利用する方法が分かりません

やりたいこと

ファイル内の文字列を以下のように置換したい
・vbファイルの名前の前だけに「common\」を追加したい
・iniファイルの前には「common\」を追加しない
・「test」の部分は実際には名前がバラバラ

VB.NET

12<Link>test1.vb</Link> 3<Link>test2.vb</Link> 4<Link>test3.vb</Link> 5<Link>system.ini</Link> 6<Link>application.ini</Link> 7 89 10<Link>common\test1.vb</Link> 11<Link>common\test2.vb</Link> 12<Link>common\test3.vb</Link> 13<Link>system.ini</Link> 14<Link>application.ini</Link>

開発環境

言語:VB.NET
Framework:.NET Framework4.6.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kenshirou

2019/07/23 07:28 編集

「正規表現置換でマッチした文字列を置換時に再利用」することと、「やりたいこと」との関連性が良く分かりません。 単に「やりたいこと」に記載の内容を実現するだけならそれほど難しくはないのですが、文字列置換ツールを作成しているとのことですので、そのツールでの入出力の関係が分からない(「再利用」というキーワードもこれに関係する?)と回答は難しいと思います。
obon_ne

2019/07/23 08:02

「ツールを作っている中で分からないことがあります」という体での質問だったのでそのような書き方をしてしまいました。 またグループ化して置換することをそもそも知らなかったので抽象的な表現として「再利用」としました。
obon_ne

2019/07/23 08:06

ご指摘ありがとうございました
guest

回答2

0

ベストアンサー

こちらを参照してください。

置換パターンで使用できる特殊文字

投稿2019/07/23 06:43

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

obon_ne

2019/07/23 07:12

解説していただけませんでしょうか?
Zuishin

2019/07/23 07:14

解説が書いてありますが、他にどこを解説すればいいですか?
obon_ne

2019/07/23 07:17

この中どれ使えば実際に実装出来るのかわからないので教えていただきたいです
YAmaGNZ

2019/07/23 07:19

「正規表現 置換 $1」で検索してみればよろしいかと
Zuishin

2019/07/23 07:20

まずグループについてはご存知ですか?
Zuishin

2019/07/23 07:25

abc123abc という文字列を (abc)\d+(abc) という正規表現で $1def$2 に置換すると abcdefabc になります。
obon_ne

2019/07/23 07:50

YAmaGNZさんありがとうございます! 解決することが出来ました!
guest

0

正規表現のグループ化を用いて実装

実装例

'<Link>test1.vb</Link>
'<Link>test2.vb</Link>
'<Link>test3.vb</Link>
'<Link>system.ini</Link>
'<Link>application.ini</Link>
Dim str As String = 上記の文字列

'例として「~.vb」のみグループ化
str = Regex.Replace(str, "<Link>(.*.vb)</Link>", "<Link>common$1</Link>")

投稿2019/07/23 07:51

obon_ne

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kenshirou

2019/07/23 08:24

念のため パターンに使われている"."(ドット)は、任意の1文字を表します。 なので、".vb"の所の"."をエスケープしないとドット以外の文字にもマッチしてしまいます。 正確には、パターンを"<Link>(.*.vb)</Link>"とした方が良いです。 もし、<Link>タグの中身で"vb"で終わるものは"○○.vb"だけであることが明白ならば、パターンは"<Link>(.*vb)</Link>"でもいいでしょう。
obon_ne

2019/07/23 08:28

なるほど、とても分かりやすい解説ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問