错误[]无效范围

发布于 2024-12-20 12:04:20 字数 224 浏览 0 评论 0原文

我在将正则表达式与如下术语匹配时遇到范围错误:

(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-(

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

I am getting a range error while matching regular expressions with terms like below:

(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-(

Can somebody tell me how to turn off the effect of such characters like brackets, range operator etc.?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夜雨飘雪 2024-12-27 12:04:20

这并不难 - 只需在此类术语之前使用 \Q 并在其之后使用 \E 即可。

说,
/\Q(4-{[2-(3-Iodobenzyl)-3-Oxocyclohex\E/)。

给定术语中不能有 \E

It is not hard - just use \Q before and \E after such a term.

Say,
/\Q(4-{[2-(3-Iodobenzyl)-3-Oxocyclohex\E/.

You only cannot have \E in the given term.

苯莒 2024-12-27 12:04:20

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

  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/)
    

There are two methods of escaping/quoting those operators:

  1. using quotemeta

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

    Just enclose your string with \Q...\E also escapes any regex-operators. You can use this directly in the regex:

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

    Or with variable expansion:

    my $var = "(5r)-6-(4-{[2-(3-Io...";
    if($input =~ m/hello \Q$var\E world/)
    
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文