如果我跑
"Year 2010" =~ /([0-4]*)/;
print $1;
我得到空字符串。
但
"Year 2010" =~ /([0-4]+)/;
print $1;
输出“2010”。为什么?
最佳答案
您在第一个表单的字符串“Year 2010”的开头得到一个空匹配,因为 * 将立即匹配 0 位数字。 + 表单必须等到它看到至少一位数字才能匹配。
大概如果你能通过第一种形式的所有匹配,你最终会找到 2010 ......但可能只有在它在 'e' 之前找到另一个空匹配之后,然后在 'a' 之前等等。
关于regex - 为什么 "Year 2010"=~/([0-4]*)/导致 $1 中的空字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3985937/