2011-12-28 80 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))*$ 
相关问题