HTML / XMLを解析または操作するために正規表現を使用することは悪い考えであり、私は通常それを行うことは決してないことを知っています。しかし、選択肢がないためにそれを考慮します。
C#を使用して、まだタグの一部ではない文字列(理想的には特定のIDを持つスパンタグ)内のテキストを置き換える必要があります。
たとえば、スパン内にない次のテキストのABCのすべてのインスタンスを代替テキスト(私の場合は別のスパン)に置き換えたいとします。
ABC at start of line or ABC here must be replaced but, <span id="__publishingReusableFragment" >ABC inside span must not be replaced with anything. Another ABC here </span> this ABC must also be replaced
先読みと後ろ向きの両方のアサーションで正規表現を使用してみました。の線に沿ったさまざまな組み合わせ
string regexPattern = "(?<!id=\"__publishingReusableFragment\").*?" + stringToMatch + ".*?(?!span)";
しかし、それをあきらめました。
XElementにロードして、そこからライターを作成し、ノード内にないテキストを取得しようとしました。しかし、それも理解できませんでした。
XElement xel = XElement.Parse("<payload>" + inputString + @"</payload>");
XmlWriter requiredWriter = xel.CreateWriter();
どういうわけか、ライターを使用してノードの一部ではない文字列を取得し、それらを置き換えることを望んでいます。
基本的に、私はこの問題を解決するための提案/解決策を受け入れています。
助けてくれてありがとう。