如何匹配不是某些单词的单词?

Rya*_*all 2 regex perl

使用Perl或unix正则表达式,我如何捕获不是一系列值的单词.这是我想要实现的目标.

(\w:not('int','long'))
Run Code Online (Sandbox Code Playgroud)

har*_*rpo 9

不确定这是否是有效的perl语法,但你可以说"通用"的味道

/\b(?!int\b|long\b)\w+\b/
Run Code Online (Sandbox Code Playgroud)

如果你想捕捉这个词,就把parens放在一边\w+,就像这样

/\b(?!int\b|long\b)(\w+)\b/
Run Code Online (Sandbox Code Playgroud)


Cha*_*ens 6

通常说:

my %exclude = map { $_ => 1 } qw/int long/;
my @words   = grep { not exists $exclude{$_} } /(?:\b|^) (\w+) (?:\b|$)/gx;
Run Code Online (Sandbox Code Playgroud)

尤其是在5.10之前的Perl版本上(当交替速度大幅增加时).