请澄清我有一堆格式错误的文本文件,我必须从中获取数据。 文本示例:
my $content = "Abracadabra 10 anbracadabra 20 blah \n blah 1220 blah \nblah IMPORTANT blah blah 10 abracadabra 10"
我需要得到1220.即最接近的数字从左到右依次为“重要”。 问题是序列可以有任意数量的数字。 我做了一个有效的表达式,但我必须确切地告诉它有多少位数:
my ($number) = $content=~m/.*(\d\d\d\d).*?IMPORTANT/gs
像(\ d +)这样的东西显然只给我一个最后的数字..
如果可能的话,请给出一些解释而不是裸码。 谢谢!
答案 0 :(得分:1)
您可以使用此正则表达式:
\b(\d+)\D*?IMPORTANT
\b(\d+)
\D*?
(非贪婪)IMPORTANT
对于您的示例,它会在捕获的组中提供1220
。