2013-07-19 59 views
1

我有一個非常具體的需求集定義我想匹配該字符串,我有以下工作正則表達式:如何匹配不包含某個單詞的特定字符串?

/^#\s*([-a-zA-Z]+)(?=\s|$)/ 

這符合:「#關鍵字」 ...除了:「#靜態關鍵字'

對於我最後的情況,我想忽略一個字符串,如果它包含單詞:「靜態」..我做了很多挖掘,我無法弄清楚這一個。 以下是我最好的嘗試:

/^#\s*(?!Static)([-a-zA-Z]+)(?=\s|$)/ 

然而,好像我是從溶液中遠遠遠。

回答

5

你需要尋找Static的不僅僅是#和空白之後更多的地方:

/^#\s*(?!.*Static)([-a-zA-Z]+)(?=\s|$)/ 

順便說一句,你可能想用\b(一word boundary anchor,一個字母詞後匹配),以取代(?=\s|$) 。如果標點符號或除空白以外的內容都會分隔您匹配的單詞,那麼它也會匹配。

+0

@ m.buettner:對。我以前有過'。*',那麼我認爲他可能只想看看第一個「單詞」 - 但這也沒什麼意義,所以我回到了'。*'。 –

0

您可以使用此:

/^(?>[^S]++|S++(?!tatic\b))+$/ 

或者這允許 「靜電」:

/^(?>[^S]++|\BS++|\bS(?!tatic\b))+$/ 
相關問題