我有以下代码,用于查找名称为8位十六进制数的文件夹
use strict;
use warnings;
opendir(DIR, ".\\");
my @files = readdir(DIR);
closedir DIR;
foreach my $key (@files)
{
if(-d ".\\$key")
{
if ($key =~ /(^[0-9A-F]{8}?$)/){
print "$1\n";
}
}
}
我在regex101上测试了正则表达式并且它找到了正确的字符串(8位十六进制数字),但是代码无法找到我有8位十六进制作为名称的任何文件夹。我怀疑它与需要转义的某些字符有关,例如$但我尝试了许多不同的组合而没有成功。
e.g。我拥有的文件夹名称是906f3387
答案 0 :(得分:7)
你的正则表达式是使用大写A-F,但你的文件夹是小写的。使用/^[0-9a-fA-F]{8}$/
明确允许小写,或/^[0-9A-F]{8}$/i
忽略匹配中的大小写。