我想替換一些html空標籤,如<。 />(。是b,h1,...但不是br,hr,...)正則表達式 - 替換一些html標籤
我認爲:Regex.Replace(myString,「< ..?/>」,「」)但I不知道如何排除br和hr。
有人可以幫助我嗎?
Thx!
我想替換一些html空標籤,如<。 />(。是b,h1,...但不是br,hr,...)正則表達式 - 替換一些html標籤
我認爲:Regex.Replace(myString,「< ..?/>」,「」)但I不知道如何排除br和hr。
有人可以幫助我嗎?
Thx!
嘗試是這樣的:
(?:< *)(?!(?:br|hr)) *\w+ *\/ *\>
添加任何標籤爲BR |人力資源的一部分(用他們劃定「|」),您不想匹配。
如果您好奇,可以在此處閱讀它,這稱爲零寬度負向預覽:http://msdn.microsoft.com/en-us/library/az24scfc.aspx – crlanglois 2012-08-10 14:50:48
稍微簡單一些的版本適用於您的案例:<(?!br | hr)(\ w)+ /> – crlanglois 2012-08-10 14:52:14
如果你知道你想幹什麼樣的標籤,你可以做這樣的:
Regex.Replace(myString, "<(b|p|div|span) />", "")
在方括號中,所有選項都豎線分隔。
使用這樣的模式來匹配和替換它們:
<(TAG1|TAG2|TAG3|...)\s*/?>
其中(TAG1|TAG2|TAG3|...)
是你要處理的標籤,通過管道分離。請務必指定正則表達式應區分大小寫,因爲HTML標記不區分大小寫。例如,承認只是你列出的兩個,你可以創建一個這樣的正則表達式:
var exp = new Regex("<(b|h1)\s*/?>", RegexOptions.IgnoreCase);
工作原理:
\s*
可識別零個或多個空白字符。 (其中一個在正則表達式開始時不需要,因爲html標準在標籤名稱之前不允許有空格。)/?
可選地匹配'/'。 (這僅僅是要靈活有關處理HTML不使用的空標籤的/
,因爲HTML規範並不總是需要它。)你可以用它來除去像這樣的標籤:
var strippedText = exp.Replace(input, String.Empty);
[RegEx match open tags but XHTML self-contained tags]可能的重複(http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) – 2012-08-10 14:17:58
我認爲在這種情況下是可原諒的。 – mmdemirbas 2012-08-10 14:18:40
@DavidB識別和替換特定的字符串模式不解析。 – 2012-08-10 14:19:13