正则表达式:不匹配"www"

5

我想我的逻辑能力变得非常弱了。

我需要编写一个正则表达式,它匹配除了www之外的所有内容。它应该匹配wwwdabcd和其他所有内容,只是匹配www。(哦天啊,请不要太简单)。

我正在使用Ruby语言的正则表达式实现。

更新:我需要使用正则表达式而不仅仅是text != 'www',因为这是API设计的方式。它期望一个模式作为参数,而不是结果

4个回答

10

为什么要使用正则表达式?text != "www"不够吗?

以下是正则表达式(使用先行断言):^(?!www$).*


此匹配在非 "www" 字符串上匹配空字符串,而不是整个单词。 - Dawid

4

这是一个普通的正则表达式。在某些方言中,您可以使用否定断言来实现更高级的操作。

^(.|..|[^w]..|.[^w].|..[^w]|.....*)$

你需要的是长度为1、长度为2、长度为3但至少有一个字符不是"w",或长度大于3的字符串。

@soulmerge:最后一个句点不是多余的(假设你的意思是它不应该是五个句点)。它是四个句点(....)加上零个或多个其他字符(.*),总共五个句点。也可以指定为“....+”。 - Bryan Oakley
啊,我以为它是以加号结尾的。我猜看到5个句点引起了混淆(我期望有4个或更多字母)。 - soulmerge

1
与Laurence Gonsalves的()一样,但我认为可以说^.$|^..$|^....+$|.*[^w].*也就是,在开始和结束之间有1个或2个或3个以上字符,或任意数字包含非w字符。

(*)我真正想把这个作为对他回答的评论,但不小心把它发成了我的回答。我猜我会把它留在这里。


0

另一种方法

^.{0,2}([^w].*|.{4,})?$

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接