2016-05-04 33 views
0

我需要找到一個字符串中的所有斜槓,不包括那些在它前面帶有「<」符號的斜槓。正則表達式:找到所有的斜槓,但「</」

/(?!<)(\/)/g不能像我想要的那樣工作。

編輯:我忘了提及我使用JavaScript。建議的解決方案似乎是爲PHP。

+0

這聽起來像是一個HTML或XML解析問題。是嗎?如果是這樣,答案是「不要使用正則表達式」。請參閱:[用正則表達式解析XHTML](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) – Sobrique

+0

您正在使用哪種編程語言? –

+0

我正在使用Javascript。 – dtrinh

回答

0
/(?<!<)([\/\\])/g 

\正在執行'轉義文字',因爲斜線並不自然地指示被捕獲的字符。

你正在做一個負面的前瞻斷言。我將其改爲負面的後置斷言。

這個工具:https://regex101.com/真的幫助我理解正則表達式。它會告訴你你在找什麼。

0

可以使用negative lookbehind,即:

/(?<!<\/) 

正則表達式說明:

/(?<!<\/) 

Match the character 「/」 literally «/» 
Assert that it is impossible to match the regex below with the match ending at this position (negative lookbehind) «(?<!<\/)» 
    Match the character 「<」 literally «<» 
    Match the character 「/」 literally «\/» 

Regex101 Demo

0

視覺上,你的思想被愚弄了。

(?!<)看起來像一個負回顧後,但它實際上是一個負
先行

這個(?<!<)是一個負面的後視。

請注意,首先在正則表達式中放置一個斷言會減慢10到30次的正則表達式

爲了更好的性能,在字面後放置倒映/(\/)(?<!<\/)/

相關問題