2010-04-25 80 views

回答

32

試試這個:

<(?!a|em|strong) 
+0

+1我認爲它會爲Perl兼容正則表達式語法。 (對於其他的語法,它可能是不同的) – 2010-04-25 01:00:41

+0

嘗試過了,它的作品好,感謝 – Kyle 2010-04-25 02:00:51

+1

萬一有人有興趣,'?!'啓動負前瞻。我在這裏找到了一個很好的概覽:http://www.rexegg.com/regex-lookarounds.html – schnatterer 2014-08-18 20:11:05

7

您使用negative lookahead,爲此,最簡單的形式是(這個問題):

<(?!a|em|strong) 

的一個問題與那就是它會忽略<applet>。處理這種情況的一種方法是使用\b,它是一個零寬度表達式(意思是它不捕獲任何輸入),它將單詞與非單詞或非單詞到單詞的過渡相匹配。單詞字符是[0-9a-zA-Z_]。所以:

<(?!(a|em|strong)\b) 
2

如果您正則表達式引擎支持它,使用負前向斷言:這看起來未來的字符串,併成功是否會不匹配;但是,它不會消耗任何輸入。因此,您需要/<(?!(?:a|em|strong)\b)/:匹配<,然後成功,如果不存在aemstrong,然後是分詞符\b

+0

關於單詞中斷的有趣點,儘管OP沒有說明是否需要 – 2010-04-25 01:01:32

2

雖然安德魯的回答顯然更勝一籌,之前,我也得到了它與[^(?:a|em|strong)]工作。