[英]Extract portion of filename with Regex in Perl
我在文件系统中有一个文件目录:
111111.222.log
222222.33.log
444444.0.log
如果我可以访问变量$id
,其中$id
是数字first之前的第一部分.
,如何获得数字的第二部分?
$id
是一个已知值,数字的$unknown
第二部分是我想从文件名中提取的内容(如果存在)。
有没有一种有效的方法可以完成此任务,而无需将整个文件目录保存到数组中,然后使用split
遍历每个元素?
我想到的是这样的:
if (-e '$id.(\d+).log') {
$unknown = $1;
}
以上不是有效的代码,只是一个想法。
相反,如果我可以访问完整的字符串,则我用于提取的正则表达式为(其中22
是$unknown
):
"158855.22.log" =~ /^(\d+)\.(\d+)\.log$/;
print "ID is $1\n";
print "Unknown is $2\n";
您可以将glob
与正则表达式匹配结合使用:
foreach my $filename (glob "$id.*.log")
{
if ($filename =~ /^(\d+)\.(\d+)\.log$/)
{
print "ID is $1\n";
print "Unknown is $2\n";
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.