正規表現で置き換え引用符でHTMLタグのみ
-
20-09-2019 - |
質問
私は、以下の文字列:
<div id="mydiv">This is a "div" with quotation marks</div>
使用したいと思い正規表現を返します:
<div id='mydiv'>This is a "div" with quotation marks</div>
通知をどのようにid属性を本部長現在に囲まれたアポストロフィ?
する方法を教えてくださいこの正規表現とは
編集: んな魔法の弾丸を取り扱毎端事例です。またすべてのホテルの正規表現を構文解析HTMLのですが、この特定の場合は、私が特に必要な正規表現を解---だけが必要なビットの助けに表現です。
編集#2: イェンスへの解決は私にとってもランダムに来このページを思い出すべきは長く、ハードの使用に関す事ができます。私の場合での作品で私は確信しているタイプの文字列で、ちょっとする取引です。ピックアップしました。危険やリスクを下回る可能性があります。います。まだご存知でしょうこきんびないはこのメソッドを使用します。これまで警告した。
解決
これは、次の方法で行うことができる:私は"
と<
と>
の間にある、あなたは'
のすべてのインスタンスを交換したいと思います。
だから、あなたは"
のために先に<
のための背後に見て、そして、あなたのファイル内の各>
を探します。正規表現は次のようになります:
(?<=\<[^<>]*)"(?=[^><]*\>)
あなたは多分Regex.Replace
を使用して、お好みに合わせた文字を置き換えることができます。
注:私は、スタックオーバーフローのコミュニティが最もフレンドリーで親切たが、これらの正規表現/ HTML質問は私の意見では、少し多すぎる怒りと答えています。結局、ここにこの質問は、「すべての有効なHTMLと一致し、何か他のものと一致していませんどのような正規表現。」聞いていません。
他のヒント
あなたが一致することができます:
(<div.*?id=)"(.*?)"(.*?>)
とでこれを置き換えます:
$1'$2'$3
んご存知のように危険を使用Regexいれ換える。いくらいが丁度いい、以下の回答者検索の方法は安定また解決策もうしばらくお待ちくださいとして、入力docs変化します。
利用のHTMLジパックプロジェクトページ, nugetこのトリック:
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml("your html here");
// or doc.Load(stream);
var nodes = doc.DocumentNode.DescendantNodes();
foreach (var node in nodes)
{
foreach (var att in node.Attributes)
{
att.QuoteType = AttributeValueQuote.SingleQuote;
}
}
var fixedText = doc.DocumentNode.OuterHtml;
//doc.Save(/* stream */);