HTMLタグを含むHTMLの文字列内で、>文字のすべてのインスタンスをHTMLエンティティに相当する>に変換しようとしています。これに対する解決策を得ることができた最も遠いのは、正規表現を使用することです。
これが私がこれまでに持っているものです:
public static readonly Regex HtmlAngleBracketNotPartOfTag = new Regex("(?:<[^>]*(?:>|$))(>)", RegexOptions.Compiled | RegexOptions.Singleline);
私が抱えている主な問題は、HTML タグの一部ではない単一の > 文字を分離することです。レンダリング用に HTML を保持する必要があるため、既存のタグを変換したくありません。> 文字を変換しないと、不正な形式の HTML が生成され、ブラウザーでレンダリングの問題が発生します。
これは、解析するテスト文字列の例です。
"Ok, now I've got the correct setting.<br/><br/>On 12/22/2008 3:45 PM, jproot@somedomain.com wrote:<br/><div class"quotedReply">> Ok, got it, hope the angle bracket quotes are there.<br/>><br/>> On 12/22/2008 3:45 PM, > sbartfast@somedomain.com wrote:<br/>>> Please someone, reply to this.<br/>>><br/>><br/></div>"
上記の文字列では、HTML タグの一部である > 文字を > に変換する必要はありません。したがって、この:
<div class"quotedReply">>
これになるはずです:
<div class"quotedReply">>
もう 1 つの問題は、上記の式が非キャプチャ グループを使用していることです。これは、一致がグループ 1 にあるという事実を除いては問題ありません。マッチ。MatchEvaluator は実際にはそのトリックを実行していないように見えます。または、今のところ想像できないだけかもしれません。
私の正規表現は、愛情を込めて行うことができると思います。
誰にも明るいアイデアはありますか?