2012-06-08 41 views
3

我有以下代碼:如何修復刪除HTML註釋的正則表達式從刪除條件註釋?

source = Regex.Replace(source, "<!--.*?-->", string.Empty, RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Compiled); 

...並能正常工作,但它也除掉條件註釋:

<!--[if IE]>???<![endif]--> 

誰能告訴我如何更新正則表達式,因此不刪除條件註釋?

+0

如果它跟你想要的東西像正則表達式的傳統規則: Regex.Replace(來源: 「< - \ S [^ \\] * - !?。?>」 字符串。空,RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Compiled); 例如。 '忽略任何空格,如果有[註釋開始後的標記],則不匹配。 – Soz

回答

3

您可以使用negative lookaheads and negative look behinds

<!--(?!\[).*?(?!<\])--> 

應該只匹配<!--後面沒有[和任何-->不是由前面],當然,在*?匹配中間的文本。

使用Derek Slager's非常有用的和快速的正則表達式測試儀進行測試:

源文本:

<!--[if IE]>???<![endif]--> 
<!--Comment--> 

圖樣:

<!--(?!\[).*?(?!<\])--> 

結果:

找到1匹配:

1. <!--Comment--> 
+0

謝謝!這工作像一個魅力。 – Gup3rSuR4c