Regex 带有字母和数字的正则表达式perl

Regex 带有字母和数字的正则表达式perl,regex,perl,Regex,Perl,我需要从包含字母和数字的文本文件中提取字符串。台词是这样开始的 Report filename: ABCL00-67900010079415.rpt ______________________ 我所需要的是最后8个数字,所以在这个例子中是10079415 while(<DATA>){ if (/Report filename/) { my ($bagID) = ( m/(\d{8}+)./ ); print $bagID; } 现在这个打印出前8个,但我要最后8个 您只

我需要从包含字母和数字的文本文件中提取字符串。台词是这样开始的

Report filename: ABCL00-67900010079415.rpt ______________________
我所需要的是最后8个数字,所以在这个例子中是10079415

while(<DATA>){
if (/Report filename/) {
  my ($bagID) = ( m/(\d{8}+)./ );
  print $bagID;
}

现在这个打印出前8个,但我要最后8个

您只需转义圆点,使其与圆点前面的8位字符相匹配

my ($bagID) = ( m/(\d{8}+)\./ );

。是正则表达式中与任何字符匹配的特殊字符。为了匹配文字点,您必须转义它。

您只需要转义该点,这样它就可以匹配该点之前存在的8位字符

my ($bagID) = ( m/(\d{8}+)\./ );
。是正则表达式中与任何字符匹配的特殊字符。要匹配文字点,必须对其进行转义。

要匹配任何内容的最后一个,只需在其前面加一个通配符,该通配符将匹配尽可能多的字符

my ($bag_id) = / .* (\d{8}) /x
请注意,我还使用了/x修饰符,以便正则表达式可以包含不重要的空格以提高可读性。而且,你的\d{8}+是所谓的所有格量词;它用于优化某些正则表达式结构,并且在模式的末尾没有任何区别

要匹配任何内容的最后一个,只需在其前面加一个通配符,该通配符将匹配尽可能多的字符

my ($bag_id) = / .* (\d{8}) /x

请注意,我还使用了/x修饰符,以便正则表达式可以包含不重要的空格以提高可读性。而且,你的\d{8}+是所谓的所有格量词;它用于优化某些正则表达式结构,并且在模式的末尾没有任何区别

是文件名常量的数字部分的长度吗?是文件名常量的数字部分的长度吗?是my$bagID=m/*\d{8}+/;匹配此字符串的突出显示部分'ABCL10079415.00-67900010079415.rpt some stu10079415'。请贪婪我的$bagID=m/*\d{8}+/;匹配此字符串的突出显示部分“ABCL10079415.00-67900010079415.rpt 10079415”