代码之家  ›  专栏  ›  技术社区  ›  Ryall

我怎样才能匹配一个不是特定词的词?

  •  2
  • Ryall  · 技术社区  · 17 年前

    使用perl或unix regex,如何捕获不属于值范围的单词。这就是我想要达到的目标。

    (\w:not('int','long'))
    
    2 回复  |  直到 17 年前
        1
  •  9
  •   Adam Bellaire    17 年前

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

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

    如果你想抓住这个词,把帕伦斯放在周围 \w+ ,像这样

    /\b(?!int\b|long\b)(\w+)\b/
    
        2
  •  6
  •   Chas. Owens    17 年前

    一般来说,说:

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

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