Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何在正则表达式中使用变量_Regex_Perl - Fatal编程技术网

Regex 如何在正则表达式中使用变量

Regex 如何在正则表达式中使用变量,regex,perl,Regex,Perl,我有一个带有一些值的数组 @array=("B_MY03", "D16", "DECAP2"); 如何使用每个值在包含该值的文件中查找模式 while(<$file>){ foreach $val(@array){ if( $_ =~ /^item\s\=\s\w+("GR\$key\",/){...} } } my@array=(“B_MY03”、“D16”、“DE

我有一个带有一些值的数组

      @array=("B_MY03", "D16", "DECAP2");
如何使用每个值在包含该值的文件中查找模式

      while(<$file>){
           foreach $val(@array){
                if( $_ =~ /^item\s\=\s\w+("GR\$key\",/){...}
           }
       }
my@array=(“B_MY03”、“D16”、“DECAP2”);
my($re)=映射qr/$\u1/,加入“|”,映射quotemeta,@array;
while(){
#项目=类型(“GRB_MY03”、“DI”);
如果(/^Item\s*=\s*\w+\(“GR($re)”/){…}
}
my@array=(“B_MY03”、“D16”、“DECAP2”);
my($re)=映射qr/$\u1/,加入“|”,映射quotemeta,@array;
while(){
#项目=类型(“GRB_MY03”、“DI”);
如果(/^Item\s*=\s*\w+\(“GR($re)”/){…}
}
严格使用;
使用警告;
子列表\u至\u regexp{
本地$“=q(|);
我的@list=map quotemeta,@;
返回qr/@list/;
}
my@values=('value1','value2','value3');
我的$values\u re=list\u to\u regexp(@values);
而()
{
如果(/^item\s=\s($values\u re)$/x)
{
打印“数据的第$行;找到项目“$1”\n”;
}
}
__资料__
项目=价值3
项目=价值4
项目=值1
灵长类=猴子
灵长类=猩猩
项目=值1
灵长类=黑猩猩
严格使用;
使用警告;
子列表\u至\u regexp{
本地$“=q(|);
我的@list=map quotemeta,@;
返回qr/@list/;
}
my@values=('value1','value2','value3');
我的$values\u re=list\u to\u regexp(@values);
而()
{
如果(/^item\s=\s($values\u re)$/x)
{
打印“数据的第$行;找到项目“$1”\n”;
}
}
__资料__
项目=价值3
项目=价值4
项目=值1
灵长类=猴子
灵长类=猩猩
项目=值1
灵长类=黑猩猩
      Item = Type("GRB_MY03",  "DI");
my @array = ("B_MY03", "D16", "DECAP2");
my ($re) = map qr/$_/, join "|", map quotemeta, @array;


while(<$file>) {

  #       Item = Type("GRB_MY03",  "DI");
  if ( /^Item\s*=\s*\w+\("GR($re)"/ ) { ... }

}
use strict;
use warnings;

sub list_to_regexp {
   local $" = q(|);
   my @list = map quotemeta, @_;
   return qr/@list/;
}

my @values = ('value1', 'value2', 'value3');
my $values_re = list_to_regexp(@values);

while (<DATA>)
{
   if (/^ item \s = \s ($values_re) $/x)
   {
      print "On line $. of data; found item '$1'\n";
   }
}

__DATA__
item = value3
item = value4
item = value1
primate = monkey
primate = orangutan
item = value1
primate = chimpanzee