如何匹配非partners
的字符串?
以下是我与合作伙伴匹配的内容:
/^partners$/i
我尝试过以下内容以便不匹配合作伙伴,但似乎无效:
/^(?!partners)$/i
答案 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)