我需要一个正则表达式来匹配除 Q 之外的任何字符或单词。
我尝试使用表达式
/\b((?!(Q)).+?)\b/
但它不工作!
您是否要禁止使用“Q”一词或包含“Q”的词?
使用双重否定:“一个字符是(\w and not-Q)”是“一个字符不是(not-\w or Q)”([^\WQ]
)。
/\b([^\WQ]+)\b/
您可以使用环视(例如)执行基本的集合算术\w(?<!Q)
。
/b((?:\w(?<!Q))+)\b/
有一个实验功能可以使用字符类执行集合算术。
# Use at your own risk.
use experimental qw( regex_sets );
/\b(?[ \w - [Q] ])+)\b/
/\b(Q\w+|[^\WQ]\w*)\b/
或者
/\b(?!Q\b)(\w+)\b/
或者
# Use at your own risk.
use experimental qw( regex_sets );
/\b(Q\w+|(?[ \w - [Q] ])+)\w*)\b/
你可以使用这个正则表达式
\b(?!\w*Q)(\w+)\b
正则表达式的问题:
1] (?!Q)
将检查Q
当前位置之后是否有..因此,\b(?!Q)
您正在检查特定单词是否以.开头Q
。
您可以使用\b(?!\w*Q)
which 来检查单词的Q
任何地方
2] .+?
是\b
多余的,因为.
也会匹配space
.
因此,如果您的输入Hello World
使用\b.+?\b
正则表达式,它将匹配Hello
, space
, World
。您应该使用\b\w+\b