首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >字符串上的perl正则表达式数字

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

Stack Overflow用户
提问于 2014-04-04 12:40:43
回答 2查看 63关注 0票数 0

我正试着从一个字符串中得到号码。数字可以是纯数字,例如12334,也可以用下划线12_345分隔

我试着使用下面的代码,但无法从中得到任何信息。

代码语言:javascript
运行
复制
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,它仍然没有返回任何内容,即使是在

代码语言:javascript
运行
复制
$string =~ /\b\d\b/ 

关于字符串141_153_923

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-04 12:44:33

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

现在是审判官。试着用这个:

代码语言:javascript
运行
复制
if ($string =~ /\b(\d+(?:_\d+)*)\b/) {
票数 2
EN

Stack Overflow用户

发布于 2014-04-04 12:49:54

试试这个regex:/((?:\d+\_?)+)/

代码语言:javascript
运行
复制
...
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";
}
...

产出:

代码语言:javascript
运行
复制
first: 141_153_923
second: 141153923
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22863109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档