在我的目录中,我有以下文件名模式:
1.模式
2018_09_01_Filename.java
或
2.模式
kit-deploy-190718_Filename.java
现在,我尝试选择目录中与第一个模式匹配的每个文件(日期可以不同,但总是year_month_day)。
我一直在想,我可以从文件中分离出基本名称,这样我就可以得到前十个字符。然后我会看看这是否与一个模式匹配。
my $filename = basename($file);
my $chars = substr($filename, 0 , 10);
if ($chars =~ m/2000_01_01/) {
print "match\n";
}
else {
print "Don't match";
}
1条答案
按热度按时间eoigrqb61#
您只需要一个符合您需求的正则表达式,例如:
说明
\D?
匹配任何非数字字符?
Quantifier -匹配0到1次,尽可能多次,根据需要返回(贪婪)20
按字面匹配字符20(区分大小写)\d{2}
匹配数字{2}
量词-正好匹配2次_
与字符_
完全匹配\d{2}
匹配数字{2}
量词-正好匹配2次_
与字符_
完全匹配\d{2}
匹配数字{2}
量词-正好匹配2次\D?
匹配任何非数字字符?
Quantifier -匹配0到1次,尽可能多地匹配,根据需要返回(贪婪)检查demo