字符串上的perl正则表达式数字

时间:2014-04-04 12:40:43

标签: regex perl

我试图从字符串中获取数字。该数字可以是纯数字,例如12334或可以用下划线12_345

分隔

我尝试使用以下代码,但无法从中获取任何内容。

my $string = "this is a 141_153_923 number : $_123_456";          

if ($string =~ /\b\d*(?:\d+\_?\d+)*\d*\b/) {
    print "$&\n";
}

预期输出为141_153_923

我也尝试使用字符串141_153_923,即使使用

,它仍然没有返回任何内容
$string =~ /\b\d\b/ 
字符串141_153_923

上的

2 个答案:

答案 0 :(得分:2)

我希望您的$_123_456代码中声明了变量Perl。否则你会收到警告。

现在是正则表达式。试试这个:

if ($string =~ /\b(\d+(?:_\d+)*)\b/) {

答案 1 :(得分:0)

试试这个正则表达式:/((?:\d+\_?)+)/

...
my $string = "this is a 141_153_923 number : \$_123_456";
my $num;
if  (($num) = $string =~ /((?:\d+\_?)+)/) {
  print "first: $num\n";
}

$string = "this is a 141153923 number : \$_123_456";
if  (($num) = $string =~ /((?:\d+\_?)+)/) {
  print "second: $num\n";
}
...

输出:

first: 141_153_923
second: 141153923