我试图通过正则表达式在字符串中找到正数和负数。我已经得到了一个正则表达式模式,但是如何为负数吐出一个负号呢?我知道我可以有两个if
语句,但我想知道是否有正则表达式快捷方式。
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
小数?
答案 0 :(得分:5)
您没有将可选的-
包含在捕获组中。
此代码有效:
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";
}
答案 1 :(得分:3)
获取-
为什么不使用/(-?\d+\.?\d+)/
?为什么你打印“整数”而-32.10实际上不是?