>当需要重复分组但不需要使用来自传统(捕获)组的捕获值时,请使用非捕获组(?:模式).
>适用时使用 atomic group(或非回溯子表达式)(?>模式).
>通过设计您的正则表达式,尽早终止非匹配,避免使用 catastrophic backtracking像瘟疫.
>适用时使用 atomic group(或非回溯子表达式)(?>模式).
>通过设计您的正则表达式,尽早终止非匹配,避免使用 catastrophic backtracking像瘟疫.
我创建了一个演示这些技术的视频.我在catastrophic backtracking文章(x x)y中以非常差的正则表达式开始.然后,经过一系列优化,每次更改之后,我都做出了300万倍的基准.该视频是特定于.NET,但许多这些事情也适用于大多数其他正则表达式: