簡體   English   中英

正則表達式給編譯器錯誤

[英]Regex gives compiler error

<(\w+)\b(?:\s+[\w\-.:]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[\w\-.:]+))?)*\s*/?>\s*</\1\s*>

上面是我從“ 刪除所有空HTML標記”中獲取的正則表達式 我正在嘗試使用以下相同的內容:

string regex= @"<(\w+)\b(?:\s+[\w\-.:]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[\w\-.:]+))?)*\s*/?>\s*</\1\s*>";

而且我遇到了許多編譯錯誤,例如-上一行本身的常量,無法識別的轉義序列中的換行符。

有人可以指出我在想什么嗎?

您需要在字符串內的雙引號中使用""

string regex= @"<(\w+)\b(?:\s+[\w\-.:]+(?:\s*=\s*(?:""[^""]*""|'[^']*'|[\w\-.:]+))?)*\s*/?>\s*</\1\s*>";

您在正則表達式中有雙引號,需要將其引起來。

 string regex= @"<(\w+)\b(?:\s+[\w\-.:]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[\w\-.:]+))?)*\s*/?>\s*</\1\s*>";

應該

string regex= @"<(\w+)\b(?:\s+[\w\-.:]+(?:\s*=\s*(?:\u0022[^\u0022]*\u0022|'[^']*'|[\w\-.:]+))?)*\s*/?>\s*</\1\s*>";

順便說一句,由於<\\/\\1\\s*>這只會刪除周圍空間的平衡標簽。 它將匹配<p> </p>但不匹配<p> </p> <img src=bogus onerror=alert(1337)>

即使您要做的只是刪除空間周圍的平衡標簽,但請注意,這將不匹配所有此類標簽。 具體來說,它將不匹配標簽名稱隨大小寫而變化的標簽: <p> </P>

最后,它不會刪除傳遞性空標簽: <i><b></b></i> -> <i></i>

單引號( " )必須在逐字字符串中用雙引號( "" )進行轉義。

嘗試這個

string regex= @"<(\w+)\b(?:\s+[\w\-.:]+(?:\s*=\s*(?:""[^""]*""|'[^']*'|[\w\-.:]+))?)*\s*/?>\s*</\1\s*>";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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