错误[]无效范围

时间:2011-12-12 05:19:43

标签: perl

我在使用以下术语匹配正则表达式时收到范围错误:

(5r)-6-(4-{[2-(3-Iodobenzyl)-3-Oxocyclohex-1-En-1-Yl]Amino}Phenyl)-5-Methyl-4,5-Dihydropyridazin-3(2h)-One

show range error at 2-(

有人可以告诉我如何关闭括号,范围运算符等字符的效果吗?

2 个答案:

答案 0 :(得分:3)

这并不难 - 只需在此之前使用\Q并在\E之后使用/\Q(4-{[2-(3-Iodobenzyl)-3-Oxocyclohex\E/

说, \E

在给定的期限内,您只能拥有{{1}}。

答案 1 :(得分:1)

有两种方法可以转义/引用这些运算符:

  1. 使用quotemeta

    my $var = quotemeta("(5r)-6-(4-{[2-(3-...")
    
    print "match\n" if($input =~ m/hello $var world/) ;
    
  2. 使用\Q...\E

    \Q...\E括起你的字符串也会逃避任何正则表达式运算符。您可以直接在正则表达式中使用它:

    if($input =~ m/hello \Q(5r)-6-(4-{[2-(3-Io...\E world/)
    

    或者使用可变扩展:

    my $var = "(5r)-6-(4-{[2-(3-Io...";
    if($input =~ m/hello \Q$var\E world/)