我有以下代码,用于查找名称为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 "$1n";
}
}
}
我在regex101上测试了regex,它找到了正确的字符串(8位十六进制),但代码找不到任何以8位十六进位为名称的文件夹。我怀疑这与某些需要转义的字符有关,例如$,但我尝试了许多不同的组合,但都没有成功。
例如,我拥有的文件夹名称是906f3387
您的regex使用大写A-F,但您的文件夹使用小写。使用/^[0-9a-fA-F]{8}$/
显式允许小写,或使用/^[0-9A-F]{8}$/i
忽略匹配中的大小写。