表达式的优化

  • 化简量词:.*(?:.)*在逻辑上是相等的,但是前者速度要更快,引擎内部做了优化。

  • 尽量使用非捕获的括号

  • 消除不必要的字符组:[.]与.在逻辑上是相等的,但是后者更快。

  • 字符组优于多选结构 [abc] 优于 a|b|c

  • 忽略优先还是匹配优先,具体情况具体分析。:同样情况下,匹配优先速度更快。

  • 视情况使用起始锚点^ : .*除非罕见的情况,否则都加上^,如果开头匹配不了,那么其他地方也理应匹配不上。

  • 从量词中提取必须的元素 :aa* 替代 a+ bbb{0,7} 替代 b{3,10}

  • 提取多选结构开头的必须元素 :th(?:is|at) 替代 this|thiat

  • 独立出起始锚点^ : ^(?:abc|123) 替代 ^abc|^123

  • 将最有可能匹配的多选分支放到前头(先迈最好使的腿)

Last updated