由perl中的标量进行正则表达式匹配

时间:2016-10-18 09:25:37

标签: regex perl

我在这里使用标量使用正则表达式。第一次。我会把代码。它应该是不言而喻的

#!/usr/bin/perl

my $regex = "PM*C";
my $var = "PM_MY_CALC";

 if($var =~ m/$regex/){
    print "match \n";
 }

 else{

    print "no match\n";
 }

我得到的输出是“不匹配”..

我错过了一些明显的东西吗?显然它没有匹配任何其他东西..所以只是使正则表达式和变量被检查相等..仍然没有匹配。

我也试过这样做..

 if($var =~ $regex ){

基于perlMonks的一些搜索。

1 个答案:

答案 0 :(得分:1)

  我错过了一些明显的东西吗?

你错过了正则表达式的工作方式。它们不适用于shell文件名扩展的工作方式。

你的正则表达式使用*,意思是“前面一个字符的零以上”。所以M*不匹配任何东西,'M','MM','MMM'等等。

您希望匹配“PM”,后跟任意数字的任何字符,后跟“C”。正确的正则表达式是PM.*C。点(.)表示“匹配(几乎)任何字符”和(如上所述)*匹配零或更多。

我建议您阅读Perl Regular Expression tutorial