我需要从包含字母和数字的文本文件中提取字符串。台词是这样开始的
Report filename: ABCL00-67900010079415.rpt ______________________我只需要最后8个数字,在这个例子中是10079415
while(<DATA>){
if (/Report filename/) {
my ($bagID) = ( m/(\d{8}+)./ );
print $bagID;
}现在这个打印出来的前8个,但我要最后8个。
发布于 2015-07-24 17:20:16
您只需转义点,以便它将匹配存在于点字符之前的8位字符。
my ($bagID) = ( m/(\d{8}+)\./ );.是正则表达式中的一个特殊字符,它与任何字符匹配。为了匹配一个文字点,你必须转义。
发布于 2015-07-24 19:16:25
若要匹配最后一个字符,只需在其前面加上通配符,该通配符将匹配尽可能多的字符。
my ($bag_id) = / .* (\d{8}) /x请注意,我还使用了/x修饰符,以便正则表达式可以包含可读性方面的小空格。此外,您的\d{8}+也被称为拥有量词;它用于优化某些正则表达式,并且在模式的末尾没有任何区别。
https://stackoverflow.com/questions/31616281
复制相似问题