Perl正则表达式选项存储在变量中[重复]

Posted

技术标签:

【中文标题】Perl正则表达式选项存储在变量中[重复]【英文标题】:Perl regex option stored in variable [duplicate] 【发布时间】:2018-09-19 12:04:50 【问题描述】:

有没有办法将正则表达式及其选项存储在标量中?就我而言,我有这个:


  regex => 'this is'.CONSTANT_STRING'. a regex',
  someOtherKey => someOtherValue

匹配时我这样做:

if($line =~ m/$hash->regex/i) 
...

效果很好。

但我需要的是选项 /i 存储在正则表达式本身中,所以我可以这样做

if($line =~ $hash->regex) 
...

但是当我尝试像这样将正则表达式存储在哈希中时:

regex => '/this is a regex/i',

这行不通。我玩过

评估,qr

等等。这有可能做到吗?

【问题讨论】:

你试过这样存储吗?:regex => qr/this is a regex/i(带qr,不带引号) 【参考方案1】:

您可以将qr 与修饰符一起使用

regex => qr/this is a regex/i,

或者你可以通过?:内联修饰符

regex => '(?i:this is a regex)',
# or
regex => qr/(?i:this is a regex)/,

【讨论】:

regex => '(?i:this is a regex)' 为我做了。谢谢。

以上是关于Perl正则表达式选项存储在变量中[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Perl - 正则表达式匹配的输出非常奇怪,确实

Perl正则表达式引用

Perl正则表达式匹配多行文件与匹配变量如何处理换行

在 Perl 正则表达式中展开环境变量

如何将正则表达式捕获存储在 Perl 的数组中?

Perl 中的正则表达式组:如何从正则表达式组中捕获与字符串中出现的未知数量/多个/变量匹配的元素到数组中?