我的正则表达式有一个奇怪的问题。
我的正则表达式是截断最后一个字符,在下面的例子中它应该返回值32,但它返回3。
请注意,该值最多可达10位!!!
$word = "thisisit=";
$line = "hello thisisit=32 byefornow ";
if ($line =~ m/$word(.*?)\d /)
{
print $1; #returns 3 instead of 32
}
感谢。
答案 0 :(得分:5)
你可以这样做:
if ($line =~ /$word(\d+)/) # This will capture all numbers after your $word
{
print $1;
}
您还可以优化为:
if ($line =~ /$word\s*(\d+)/) # In case you're having like "thisisit= 32 byefornow"
或者,捕获所有内容并在第一个空格后停止:
if ($line =~ /$word(.+?)\s/)
{
print $1;
}
答案 1 :(得分:1)
您应该要求它返回零或任意位数:
($line =~ m/$word(.*?)\d* /)
至少一位数字:\ d +
两位数字:\ d {2}
根据规格,我不确定你在寻找什么。