捕获组中的回溯

backtracking in capturing group

在第一个图像中,它确实开始回溯以找到 |

但是在第二张图中,并没有开始回溯找到|

捕获组没有回溯?

在第二个正则表达式中,您有一个在第一个正则表达式中不存在的交替。这种交替带来了选择引擎作为成功之路的机会。

因此,一旦交替的第一侧失败,第二侧就会应用,巧合的是,输入字符串末尾的文字点字符立即与交替第二侧的 \. 匹配,因此不会回溯到 |.

去掉它,你会再次看到类似的回溯步骤:

\S+(\|\d+\|\S+\.)