正規表現でマッチした文字列の直後に挿入するには?

解決


サトコ  2005-07-16 09:10:23  No: 123556

VB.NET2003を使っています
正規表現を使って、マッチした文字列の直後の位置に
ピンポイントで文字列を挿入できませんでしょうか。
例えば:
Text = "<ABCD><HIJK>"
             ↑ ココに<EFG>を入れたいです
今はReplaceを使って
Regex.Replace(Text, "<ABCD>", "<ABCD><EFG>")
としていますが、これを
Regex.Replace(Text, "<ABCD>(ココ)", "<EFG>")
のような事が出来ませんでしょうか。

<ABCD>を上書きするような形ではなく、もっと賢い方法が
あるのではないかと、悩んでいます。
どなたかご存じでしたら、教えていただきたいです。
よろしくお願いします。


ねろ  2005-07-19 18:21:00  No: 123557

気持ちはわかりますが、文字列の挿入場所を見つけ、文字列の挿入をしても
結局内部処理としては、文字列の領域の再確保、文字列のコピーと言うようことを
することになり、工夫しても余り意味が無いような気がします。
文字列の置き換えで長さが頻繁に変わるのであれば、
StringBuilderクラスのReplaceを使った方が速いかも知れません。
Dim sb As New StringBuilder
sb.Append("<ABCD><HIJK>")
sb.Replace("<ABCD>", "<ABCD><EFG>")


あん  2005-07-20 00:01:37  No: 123558

Text = "<ABCD><HIJK>"
Regex.Pattern="(<ABCD>)"
Regex.Replace(Text, "$1<EFG>")

こうでしょうか?
みためだけですが・・・


サトコ  2005-07-24 03:16:17  No: 123559

返事が遅くなってごめんなさい。
ねろさん  あんさん  お返事ありがとうございます。
結局あんさんの方法で(後方参照っていうのかな?)
やることにしました。正規表現の部分がスッキリして
ソースも見やすくなりました。

どうもありがとうございました。これからも頑張って
勉強します。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加