我遇到了Perl的行为,我无法解释:
#!/usr/bin/perl
use strict;
use warnings;
my $number = -10;
if ($number =~ /\d+/) {
print $number;
}
这打印-10
尽管如此,
为什么它在开头忽略减去?
答案 0 :(得分:7)
您应该使用^:
匹配字符串的开头if ($number =~ /^\d+/) {
答案 1 :(得分:2)
减号是一个符号,而不是数字,所以请使用:
if ($number =~ /^-?\d+$/) {
print $number;
}
-?
表示减去-
符号可以满足一次或零次
答案 2 :(得分:1)
您可以将其写为
if ($number and $number !~ /\D/) {
print $number;
}
检查字符串是否为零长度且不包含任何非数字字符。
答案 3 :(得分:0)
无论\ d +或[0-9] +的目的是什么,它只做正确的事情。这取决于你的要求你想要的其他东西,如整数混合或只是负数匹配或正数匹配或开始,结束,任何地方等。所有取决于你想要发展的模式。