[英]Replace double quotes inside double quotes html attribute
我有一些情況,我的客戶發送一個html字符串,其中一些元素屬性不正確的結構。 像這樣:
<img src="../imgTest.jpg" alt="Something "quoted here, or here"">
我怎樣才能動態地將這些情況更改為下一個類似的內容?
<img src="../imgTest.jpg" alt="Something 'quoted here, or here'">
我需要這個html不要在瀏覽器上顯示,而是用它做一些操作。
我正在使用HtmlAgilityPack來控制html問題但是對於這些情況,它將我的html字符串更改為this並且它不是我想要的:
<img src="../imgTest.jpg" alt="Something" quoted="" here,="" or="" here="">
我的代碼與HtmlAgilityPack:
var htmlDoc = new HtmlDocument();
htmlDoc.OptionFixNestedTags = true;
htmlDoc.LoadHtml(myHtmlStr);
var htmlError = htmlDoc.ParseErrors.SafeAny();
if (!htmlError)
myHtmlStr = htmlDoc.DocumentNode.InnerHtml;
我的想法是匹配"
如果它在標簽內並且不是屬性限定符。
免責聲明:此解決方案可能無法在100%的情況下工作(如果在元素/屬性名稱中添加了名稱空間,則需要進行調整),但是當標簽名稱跟在<
immediate,double引號用作屬性值限定符后,它應該有效,內部屬性沒有<
符號。
采用
(?<=<\w+\b[^<]*)(?<!\w+=)"(?!\s*/?>|\s+\w+=")
並用'
替換。
請參閱正則表達式演示 。
第一個lookbehind確保我們在標簽內搜索雙引號,如果在雙引號之前有一個跟隨等號的單詞,則第二個看不到匹配,如果遵循雙引號,則負向前瞻不匹配使用空格后跟一個右尖括號(可能以正斜杠開頭)或當有空格后跟一個后跟等號的單詞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.