2013-02-08 76 views
0

早些時候,我嘗試了一些正則表達式來修剪<!-- and -->(包括這些標記以及)之間的字符串,但沒有成功。正則表達式 - 刪除<!-- and -->之間的字符

你能告訴我一些關於這個問題的信息嗎?

+3

@Johnsyweb這只是明顯錯誤的。 HTML中的評論不能包含其他評論,所以你不會遇到模棱兩可的標記問題 - 評論只是文本以「 - >」序列結尾(評論中的任何地方的序列將結束它,你不能逃避它) – MBO

+0

@MBO:在評論中,「 - >」明確地表示評論的結尾。但是,「<! - 」不一定是評論的開始。這可能會導致可利用的表面。例如如果此後的過濾完成,那麼可能會剝離事件屬性的東西可能會很容易受到阻礙:'-->" onmouseover="alert('uh oh')">Ooh! Move over me!'。即使使用正則表達式來解析*註釋*可能是一個壞主意。 –

+0

@ChrisMorgan好點,我沒有考慮標籤內部的評論開始......所以這仍然是一個難題。 – MBO

回答

2

正則表達式匹配HTML註釋

/<!--.*?-->/s 

解釋演示在這裏:http://regex101.com/r/qZ4uP9

+0

我冒昧地添加's'修飾符:默認情況下'.'與大多數正則表達式實現中的換行符都不匹配(使用's')。 –

+0

@BartKiers:thanx,讚賞 –

2

以匹配文本看起來像XML註釋(非常接近HTML註釋規則的評論規則)你想要的東西是這樣的:

<!--.*?--> 

假設你的語言的RE引擎支持非貪婪的量詞。去除需要在整個輸入文本中重複匹配,並替換空字符串;其語法取決於所討論的語言。

沒有非貪婪量詞,事情變得更加複雜(NB,這是稍微偏離了HTML註釋,但你真的不想學習差的細節):

<!--([^-]|-[^-])*--> 

注意--是不應該在XML註釋中遇到的,除非它後面跟着>;這是XML評論的本質的一部分...

相關問題