2011-12-28 61 views
3

如何匹配不是partners的字符串?如何匹配任何東西除了這個字符串?

這裏是我有一個相匹配的合作伙伴:

/^partners$/i 

我試過以下,以不匹配的合作伙伴,但似乎並沒有工作:

/^(?!partners)$/i 
+2

我不知道。但是,你不能僅僅反轉你使用的任何正則表達式函數返回的結果嗎? – 2011-12-28 22:06:18

+0

用什麼編程語言? – 2011-12-28 22:09:13

+0

紅寶石........... – Jacob 2011-12-28 22:10:38

回答

8

你的正則表達式

/^(?!partners)$/i 

只匹配空行,因爲您沒有在預見聲明中包含行結束錨。 Lookaheads就是這麼做的 - 它們「向前看」而沒有真正匹配任何字符,因此只有符合正則表達式^$的行纔會成功。

這會工作:

/^(?!partners$)/i 

此報告一個匹配任何字符串(或者,因爲我們在這裏紅寶石,在多行字符串的任何行),這是從partners不同。請注意,它只與行首的空字符串相匹配。這足以用於驗證目的,但匹配結果將是""(而不是nil,如果匹配失敗,您將得到該結果)。

0

例如,在Java :

!"partners".equalsIgnoreCase(aString) 
1

不容易,但與展望未來的運營商,它可以。 這裏紅寶石正則表達式

^((?!partners).)*$ 

乾杯

+1

這匹配任何不包含*'夥伴'的字符串,這可能不是雅各想要的。至少這不是他要求的。 – 2011-12-28 22:25:35

1

如果你只是想獲得一個真正的價值時,字符串不是partners那麼就沒有必要使用正則表達式,你可以只使用一個字符串比較(而忽略案件)。

如果你因爲某些原因需要爲不包含partners任何字符串積極的正則表達式匹配(如果它是例如較大的正則表達式的一部分),你可以使用幾種不同的結構,如:

`^(?:(?!partners).)*$` 

^(?:[^p]+|p(?!artners))*$ 
相關問題