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

时间:2009-09-08 12:58:34

标签: regex perl

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

(\w:not('int','long'))

2 个答案:

答案 0 :(得分:9)

不确定这是否是有效的perl语法,但在“通用”风格中你可以说

/\b(?!int\b|long\b)\w+\b/

如果你想捕捉这个词,请将parens放在\w+周围,就像这样

/\b(?!int\b|long\b)(\w+)\b/

答案 1 :(得分:6)

通常说得快:

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

尤其是在5.10之前的Perl版本上(当交替速度大幅提升时)。