正则表达式引擎
实现正则表达式引擎的方式有两种:DFA 自动机(Deterministic Final Automata 确定有限状态自动机)和 NFA 自动机(Non deterministic Finite Automaton 非确定有限状态自动机)。在编程语言里,使用的正则表达式库都是基于 NFA 实现的。
NFA 自动机的回溯
用 NFA 自动机实现的比较复杂的正则表达式,在匹配过程中经常会引起回溯问题。大量的回溯会长时间地占用 CPU,从而带来系统性能开销。
如何避免回溯问题?
- 少用贪婪模式,多用独占模式
- 减少分支选择
- 减少捕获嵌套