簡體   English   中英

替換雙引號html屬性中的雙引號

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM