DBのフィールドに次のテキストが含まれています。
[quote:5a7b87febe="mr smith"]This is some text.
This is more text on another line.[/quote:5a7b87febe]
上記のようなインスタンスを次のように変換する正規表現を作成しようとしています。
<div><h4>Posted by mr smith</h4>This is some text.
This is more text on another line.</div>
これまでにまとめたパターンは、囲まれたテキストに改行がない場合に機能するように見えますが、別の行にテキストがある上記の例では、パターンが一致していません。
私がこれまでに持っているC#コードは次のとおりです。
var exp = new Regex(@"(\[quote)(:\w+=\"")(.*?)(\""\])(.*?)(\[\/quote)(:\w+\])");
var str = exp.Replace(str, "<div><h4>Posted by $3</h4>$5</div>");
私は正規表現が苦手なので、開始タグと終了タグの間に表示される「任意の」文字の処理方法がわかりません。
理想的には、可能であれば、上記の例のネストされたインスタンスを処理する式も必要です。
もう1つ言及する価値があるのは、「quote:」タグに続く一連の文字は毎回一意であり、引用符内の名前も異なることです。