perl正则表达式匹配除Q以外的任何“单词字符”

时间:2013-05-15 04:20:53

标签: regex perl mod-perl

我需要一个正则表达式来匹配除Q之外的任何字符或单词。

我尝试使用表达式

/\b((?!(Q)).+?)\b/ 

但它不起作用!

2 个答案:

答案 0 :(得分:8)

您是否试图禁止使用“Q”这个词,或者包含“Q”的词?


禁止包含“Q”的单词

使用双重否定:“(\ w而不是Q)的字符”是“不是(不是 - 或w或Q)的字符。”

[^\WQ]        => /\b([^\WQ]+)\b/

您也可以使用

(?!Q)\w       => /\b((?:(?!Q)\w)+)\b/

我认为第一个更快。


禁止使用“Q”一词

/\b(Q\w+|[^\WQ]\w*)\b/

/\b(?!Q\b)(\w+)\b/

答案 1 :(得分:1)

您可以使用此正则表达式

\b(?!\w*Q)(\w+)\b

正则表达式出现问题:

1] (?!Q)会检查此当前位置后是否Q。与\b(?!Q)一起,您正在检查特定字词是否开始Q

您可以使用\b(?!\w*Q)来检查Q 任何地方,并使用

一词

2] .+?正在使\b 多余,因为.也会匹配space

因此,如果您的输入为Hello World\b.+?\b正则表达式,则其匹配HellospaceWorld。您应该使用\b\w+\b < / p>