我在这里使用标量使用正则表达式。第一次。我会把代码。它应该是不言而喻的
#!/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的一些搜索。
答案 0 :(得分:1)
我错过了一些明显的东西吗?
你错过了正则表达式的工作方式。它们不适用于shell文件名扩展的工作方式。
你的正则表达式使用*
,意思是“前面一个字符的零以上”。所以M*
不匹配任何东西,'M','MM','MMM'等等。
您希望匹配“PM”,后跟任意数字的任何字符,后跟“C”。正确的正则表达式是PM.*C
。点(.
)表示“匹配(几乎)任何字符”和(如上所述)*
匹配零或更多。