该
?是一个贪婪的量词,因此将首先尝试尝试0 occurence之前的1 occurence匹配。在您的字符串中
- 它以第一个字符’a’开头,并尝试再次匹配1次出现。’a’字符匹配,因此它返回您看到的第一个结果
- 然后它向前移动并找到一个“ b”。’b’字符与您的正则表达式1次出现不匹配,因此引擎回溯并尝试匹配0次出现。结果是空字符串被匹配->您得到了第二个结果。
- 然后它就移到了b的前面,因为那里不可能再有任何匹配,它又从第二个’a’字符开始。
- 等等…你明白了…
比这要复杂一些,但这是主要思想。当1次出现次数不匹配时,它将尝试使用0次出现次数。
至于start,end和group的值,它们将是匹配开始,结束和匹配的组的位置,因此在字符串的第一个0匹配项中,您将得到1,1和空字符串。我不确定这是否真的能回答您的问题。



