我试图从字符串中获取数字。该数字可以是纯数字,例如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
上的
答案 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