Perl正则表达式从字符串中提取数字组

首先,我正在使用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”,“。”)

请帮忙!


你不必打扰点匹配,因为你只需要数字,

my @groupsOfNumbers = $inputString =~ /(d+)/g;
链接地址: http://www.djcxy.com/p/87015.html

上一篇: Perl regex to extract groups of digits from string of dot

下一篇: Regex for extracting name and value from json string