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

解決


サトコ  2005-07-16 00:10:23  No: 123556  IP: [192.*.*.*]

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

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

編集 削除
ねろ  2005-07-19 09:21:00  No: 123557  IP: [192.*.*.*]

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

編集 削除
あん  2005-07-19 15:01:37  No: 123558  IP: [192.*.*.*]

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

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

編集 削除
サトコ  2005-07-23 18:16:17  No: 123559  IP: [192.*.*.*]

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

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

編集 削除