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