除了这个字符串之外怎么匹配?

时间:2011-12-28 22:05:02

标签: ruby regex

如何匹配非partners的字符串?

以下是我与合作伙伴匹配的内容:

/^partners$/i

我尝试过以下内容以便不匹配合作伙伴,但似乎无效:

/^(?!partners)$/i

4 个答案:

答案 0 :(得分:9)

你的正则表达式

/^(?!partners)$/i

仅匹配空行,因为您没有在前瞻断言中包含行尾锚点。 Lookaheads就是这么做的 - 他们“向前看”而没有实际匹配任何字符,所以只有匹配正则表达式^$的行才会成功。

这样可行:

/^(?!partners$)/i

这会报告与任何字符串的匹配(或者,因为我们在这里使用Ruby,多行字符串中的任何行)与partners不同。请注意,它仅匹配行开头的空字符串。这足以用于验证目的,但匹配结果将为""(而不是nil,如果匹配完全失败,则会获得{。}}。

答案 1 :(得分:2)

不容易,但有前瞻操作员可以。 这里的红宝石正则表达式

^((?!partners).)*$

干杯

答案 2 :(得分:1)

如果你只想在字符串不是partners时得到一个真值,那么就不需要使用正则表达式,你可以只使用字符串比较(忽略大小写)。

如果由于某种原因需要正确的正则表达式匹配任何不包含partners的字符串(例如,如果它是较大正则表达式的一部分),您可以使用几种不同的结构,例如:

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

^(?:[^p]+|p(?!artners))*$

答案 3 :(得分:0)

例如,在Java中:

!"partners".equalsIgnoreCase(aString)