首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Perl中打印出正或负十进制数?

问如何在Perl中打印出正或负十进制数?
EN

Stack Overflow用户
提问于 2013-03-19 13:47:50
回答 2查看 1.4K关注 0票数 0

我试图通过正则表达式在字符串中找到正数和负数。我已经得到了一个有效的正则表达式模式,但是我如何用负号返回负数呢?我知道我可以有两个if语句,但我想知道是否有正则表达式的快捷方式。

代码语言:javascript
复制
my $number = 'I have a number that is a-32.10a';

if($number =~ /[-]?(\d+)(\.?(\d+))/){
    print "Number: $1$2\n";
}else{
    print "No match\n";
}

只返回32.10;我也希望返回-。

反之,如果$number是一个整数,比如= 234,我怎么能只打印整数而打印小数的no match呢?

EN

回答 2

Stack Overflow用户

发布于 2013-03-19 13:54:21

您没有在捕获组中包含可选的-。

下面的代码可以工作:

代码语言:javascript
复制
my $string = 'I have a number that is a-32.10a';

my ($number) = ($string =~ /(-?\d+\.?\d+)/);

if (defined $number) {
    print "Number: $number\n";
} else {
    print "Not a number!\n";
}
票数 5
EN

Stack Overflow用户

发布于 2013-03-19 13:55:04

要获得-,为什么不直接使用/(-?\d+\.?\d+)/呢?为什么要打印"Integer“,而-32.10实际上不是?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15492327

复制
相关文章

相似问题

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