0

正規表現を使用して、文字列内の正数と負数を見つけようとしています。正規表現パターンが機能するようになりましたが、負の数に対して負の符号を吐き出すにはどうすればよいですか? 私は2つの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て小数を出力するにはどうすればよいですか?

4

2 に答える 2

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";
}
于 2013-03-19T05:54:20.633 に答える
3

なぜ-あなただ​​けを使用しないのです/(-?\d+\.?\d+)/か?そして、-32.10 が実際にはそうではないのに、なぜ「整数」を出力するのでしょうか?

于 2013-03-19T05:55:03.697 に答える