有一个配置文件,其中包含用户提供的模式。基本上模式可以是任何东西,字母、数字、空格、不一定是封闭的大括号和特殊字符的组合。模式例如:<Error my (error** fail& 345% ?+[+?>
我对 perl 很陌生,正在努力处理这个问题。
我的一段代码:
for (<FH>) {
for ( my $j = 0 ; $j < $num_pat ; $j = $j + 1 ) {
print "This is the pattern : $pat_array[$j] \n";
if ( $_ =~ m/'$pat_array[$j]'/ ) {
print "$_ : match found for $pat_array[$j] \n";
#print "KPI for the pattern is : $kpi_array[$match] : array style \n";
$match_count[$j] = ( $match_count[$j] + 1 );
}
}
}
模式数组有多种模式。我正在尝试使用以下方法查找匹配项: if ($_ =~ m/'$pat_array[$j]'/)它适用于简单模式,但不适用于示例中的模式。
请帮助我进一步进行。
您需要引用特殊字符。见perldoc -f quotemeta
您还可以使用这样的速记\Q$variable\E
语法:
if ($string =~ m/\Q$pattern\E/) { ... }
现在任何特殊字符都将按字面匹配。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句