BBcode コンバーターを html に書いています。
コンバーターは閉じられていないタグをスキップする必要があります。
私はそれを行うための2つのオプションについて考えました:
1)次のような1つの正規表現呼び出しを使用して、すべてのタグを一度に一致させます:
Regex re2 = new Regex(@"\[(\ /?(?:b|i|u|quote|strike))\]");
MatchCollection mc = re2.Matches(sourcestring);
次に、2 つのポインターを使用して MatchCollection をループし、開始タグと開始タグを見つけ、正しい html タグに置き換えます。
2) すべてのタグに対して正規表現を複数回呼び出し、直接置き換えます。
Regex re = new Regex(@"\[b\](.*?)\[\/b\]");
string s1 = re.Replace(sourcestring2,"<b>$1</b>");
より効率的なものは何ですか?
最初のオプションは 1 つの正規表現を使用しますが、すべてのタグをループしてすべてのペアを見つけ、ペアを持たないタグをスキップする必要があります。
もう1つの良い点は、タグ間のコンテンツを気にしないことです。位置を使用して作業して置き換えるだけです。
2 番目のオプションでは、ループや特別な置換関数の作成について心配する必要はありません。
ただし、複数の正規表現と置換を実行する必要があります。
何を提案できますか?
2 番目のオプションが正しい場合、正規表現に問題があります
\[b\](.*?)\[\/b\
]
次のような複数行にも一致するように修正するにはどうすればよいですか:
[b]
test 1
[/b]
[b]
test 2
[/b]