相关疑难解决方法(0)

原子团清晰度

考虑这个正则表达式.

a*b
Run Code Online (Sandbox Code Playgroud)

这将失败的情况下 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac

这会使67调试器中的步骤失败.

现在考虑这个正则表达式.

(?>a*)b
Run Code Online (Sandbox Code Playgroud)

这将失败的情况下 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac

这会使133调试器中的步骤失败.

最后这个正则表达式:

a*+b  (a variant of atomic group)
Run Code Online (Sandbox Code Playgroud)

这将失败的情况下 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac

这会使67调试器中的步骤失败.

当我检查基准测试atomic group (?>a*)b执行179%得更快.

现在原子组禁用回溯.所以比赛中的表现很好.

  1. 但为什么步数更多呢?有人可以解释一下吗?

  2. 为什么会有差异.在两个原子团(?>a*)b和之间的步骤a*+b.

他们的工作方式不同吗

regex pcre backtracking

10
推荐指数
2
解决办法
699
查看次数

标签 统计

backtracking ×1

pcre ×1

regex ×1