加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

有没有办法在Perl中预编译正则表达式?

发布时间:2020-12-15 21:23:19 所属栏目:大数据 来源:网络整理
导读:有没有办法在Perl中预编译正则表达式?我有一个,我在程序中使用了很多次,它并没有改变之间的使用。 解决方法 对于文字(静态)正则表达式没有什么可做 – perl只会编译一次。 if ($var =~ /foo|bar/) { # ...} 对于存储在变量中的正则表达式,你有几个选项。
有没有办法在Perl中预编译正则表达式?我有一个,我在程序中使用了很多次,它并没有改变之间的使用。

解决方法

对于文字(静态)正则表达式没有什么可做 – perl只会编译一次。
if ($var =~ /foo|bar/) {
    # ...
}

对于存储在变量中的正则表达式,你有几个选项。您可以使用qr //运算符来构建正则表达式对象:

my $re = qr/foo|bar/;

if ($var =~ $re) {
    # ...
}

如果你想在多个地方使用正则表达式或将它传递给子程序,这很方便。

如果正则表达式模式是在字符串中,你可以使用/ o选项来承诺perl它永远不会改变:

my $pattern = 'foo|bar';

if ($var =~ /$pattern/o) {
    # ...
}

但通常最好不要这样做。 Perl很聪明,知道变量没有改变,正则表达式不需要重新编译。指定/ o可能是一个未成熟的微优化。这也是一个潜在的陷阱。如果变量使用/ o改变会导致perl使用旧的正则表达式。这可能导致很难诊断错误。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读