我需要一个正则表达式来匹配除 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