正则表达式选择模式的变体

时间:2014-02-19 17:50:39

标签: regex

我想说的是:

www w w w wwwcom com c o m

我想阻止www,w w w com(当它不是另一个词的一部分时)和c o m

我可以通过查找以下各项来完成此操作:

www
\bw w w\b
\bcom\b
\bc o m\b

但是,我可以将它们组合成单个语句,这些语句将搜索www和w w w或com并且可以留下2个正则表达式而不是4个吗?

4 个答案:

答案 0 :(得分:0)

您可以使用管道或正则表达式。例如rega|regb。在你的情况下,它将是:

\b((www)|(w w w))\b

答案 1 :(得分:0)

将空格作为比赛的一部分去除:

www - \b\s*w\s*w\s*w\s*\b

com - \b\s*c\s*o\s*m\s*\b

两者 - \b\s*w\s*w\s*w\s*|\s*c\s*o\s*m\s*\b

答案 2 :(得分:0)

Sabuj Hassan的回答是获得您所指定内容的唯一方法。但是,如果您还可以匹配ww ww ww,那么您可以使用:

\bw ?w ?w\b

这将允许每对字母之间最多一个空格(标签,多个空格等将不匹配)。

com也可以这样做。您可以将其与|方法结合使用,以获得一个正则表达式:

\b(w ?w ?w|c ?o ?m)\b

David Haney的答案(使用\s*)类似,但会匹配字母之间有空格和制表符组合的“短语”。例如,w\t\t\t \tw w(其中\t是制表符)将被视为匹配。

答案 3 :(得分:0)

\ B(瓦特\ S *瓦特\ S *瓦特| C \ S *○\ S *米)\ B'/ P>

匹配:
WWW
COM
ww w co m
w w w c o m

在:
www.something =>匹配www
wwwword =>没有比赛
word.com =>匹配com
wordcom =>没有匹配

不匹配:
wwwe
EWWW

ECOM