$define_file_name = "class*"; $file_name="classA1"; if($file_name =~ m/^($define_file_name)$/) { print " File Name Regex matched \n" }
如何匹配perl的regex一个变量和另一个包含'*'的变量?
wfsdck301#
该正则表达式将变为:
/^class*$/
意思是:该字符串应该以文字字符clas开始,后跟s重复0次或更多次(这是PCRE中*量词的含义)。
clas
s
*
clas class classsssss, etc
但它不会匹配通配符,如
classA1
为此,您需要使用通配符:.。您的正则表达式变成:
.
/^class.*$/
换句话说,只需在量词*之前添加一个文字句点.。您可能也会对使用glob感兴趣。例如:
for (<files/class*>) { # <...> is shorthand for glob "..." # now $_ will list the files in folder "files" that begin with "class"
您也可以将它放入数组中:
my @files = glob "class*";
请注意,这要求您将实际文件放置在适当的位置,并且进程可以通过正确的路径读取这些文件。
1条答案
按热度按时间wfsdck301#
该正则表达式将变为:
意思是:该字符串应该以文字字符
clas
开始,后跟s
重复0次或更多次(这是PCRE中*
量词的含义)。但它不会匹配通配符,如
为此,您需要使用通配符:
.
。您的正则表达式变成:换句话说,只需在量词
*
之前添加一个文字句点.
。您可能也会对使用glob感兴趣。例如:
您也可以将它放入数组中:
请注意,这要求您将实际文件放置在适当的位置,并且进程可以通过正确的路径读取这些文件。