我面臨的Perl的行爲開始忽略減去,我無法解釋: d +正則表達式在
#!/usr/bin/perl
use strict;
use warnings;
my $number = -10;
if ($number =~ /\d+/) {
print $number;
}
這將打印-10
,儘管事實上,
- \ d表示[ 0-9]
爲什麼在開始時忽略減號?
我面臨的Perl的行爲開始忽略減去,我無法解釋: d +正則表達式在
#!/usr/bin/perl
use strict;
use warnings;
my $number = -10;
if ($number =~ /\d+/) {
print $number;
}
這將打印-10
,儘管事實上,
爲什麼在開始時忽略減號?
無論\ d +或[0-9] +的目的是什麼,它只做正確的事情。這取決於你的要求,你想要什麼像混合整數或只是負數匹配或正數匹配或開始,結束,任何地方等所有取決於你想要開發的模式。
你可以寫爲
if ($number and $number !~ /\D/) {
print $number;
}
,檢查該字符串不是零長度的,不包含任何非數字字符。
'\ d'並不總是與'[0-9]'相同,請參閱http://stackoverflow.com/q/890686/372239 – Toto
@ M42因此,\ d也可以匹配希伯來語,亞美尼亞語和其他非標準數字,出現在Unicode表格中? – user4035
@ M42哪個Perl版本使用'/ a'修飾符開始? –