首先,我正在使用Perl 5.14.1。
在以下问题上我一直在拔头发(注意:我绝对吮吸与正则表达式有关)。我正在寻找一个正则表达式,只从字符串中提取数字,如下所示:
E4.1
E6
e16
e6.7.3
E42.9
基本上,总是有一个e(大写或小写),后跟至少一组数字。如果有多组数字,则它们用点分隔。我想要做的是将所有数字组提取到一个数组中。例如:
E4.1 -> ( 4, 1 )
E65 -> ( 65 )
e5.8.3 -> ( 5, 8, 3 )
其中括号中的东西应该是我从字符串中提取的数字数组。
到目前为止我得到的是
my @groupsOfNumbers = ( $inputString =~ /(\d+)((\.)\d+)*/g );
我的理由是,总是至少有一组数字(因此第一个(\ d +)),可选地后跟任意数量的点后跟数字分组(因此((。)\ d +)* 部分)。不幸的是,这似乎不起作用。例如,如果我将该正则表达式应用于此输入:
E4.3.1
结果是:
(“4”,“。1”,“。”)
请帮忙!
答案 0 :(得分:4)
您不必为点匹配而烦恼,因为您只想要数字,
my @groupsOfNumbers = $inputString =~ /(\d+)/g;