为什么
换句话说,为什么在使用懒惰模式表达式
"hello".match(/^(.*?)?/)[0]
的值是"h"
而不是""
?换句话说,为什么在使用懒惰模式表达式
(.*?)
之后再加上一个零或一次量词?
会使它有点贪心呢?"hello".match(/^(.*?)?/)[0]
的值是"h"
而不是""
?(.*?)
之后再加上一个零或一次量词?
会使它有点贪心呢?"hello".match(/^(.*?)??/)[0] // output: ""
?
量词将产生许多零长度的匹配,这是相当无用的 - 即使/^.?/
只匹配“h”
,我也不确定是否有匹配""
的价值,即使它是有效结果。 - VLAZ"hello".match(/^(.*?){0,2}/)[0] # => "he"
。 - ndnenkov?
已经导致匹配长度为零。重新加上?
根本不需要跳过该匹配项。我完全期望它能匹配成功。 - user541686