我在使用以下术语匹配正则表达式时收到范围错误:
(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-(
有人可以告诉我如何关闭括号,范围运算符等字符的效果吗?
答案 0 :(得分:3)
这并不难 - 只需在此之前使用\Q
并在\E
之后使用/\Q(4-{[2-(3-Iodobenzyl)-3-Oxocyclohex\E/
。
说,
\E
。
在给定的期限内,您只能拥有{{1}}。
答案 1 :(得分:1)
有两种方法可以转义/引用这些运算符:
my $var = quotemeta("(5r)-6-(4-{[2-(3-...")
print "match\n" if($input =~ m/hello $var world/) ;
使用\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/)