捕获组中的回溯
backtracking in capturing group
在第一个图像中,它确实开始回溯以找到 |
。
但是在第二张图中,并没有开始回溯找到|
。
捕获组没有回溯?
在第二个正则表达式中,您有一个在第一个正则表达式中不存在的交替。这种交替带来了选择引擎作为成功之路的机会。
因此,一旦交替的第一侧失败,第二侧就会应用,巧合的是,输入字符串末尾的文字点字符立即与交替第二侧的 \.
匹配,因此不会回溯到 |
.
去掉它,你会再次看到类似的回溯步骤:
\S+(\|\d+\|\S+\.)
在第一个图像中,它确实开始回溯以找到 |
。
但是在第二张图中,并没有开始回溯找到|
。
捕获组没有回溯?
在第二个正则表达式中,您有一个在第一个正则表达式中不存在的交替。这种交替带来了选择引擎作为成功之路的机会。
因此,一旦交替的第一侧失败,第二侧就会应用,巧合的是,输入字符串末尾的文字点字符立即与交替第二侧的 \.
匹配,因此不会回溯到 |
.
去掉它,你会再次看到类似的回溯步骤:
\S+(\|\d+\|\S+\.)