# 表达式的优化

* 化简量词：`.*`与`(?:.)*`在逻辑上是相等的，但是前者速度要更快，引擎内部做了优化。
* 尽量使用非捕获的括号
* 消除不必要的字符组：\[.]与.在逻辑上是相等的，但是后者更快。
* 字符组优于多选结构 \[abc] 优于 a|b|c
* 忽略优先还是匹配优先，具体情况具体分析。：同样情况下，匹配优先速度更快。
* 视情况使用起始锚点^ ： .\*除非罕见的情况，否则都加上^，如果开头匹配不了，那么其他地方也理应匹配不上。
* 从量词中提取必须的元素 ：aa\* 替代 a+    bbb{0,7} 替代 b{3,10}
* 提取多选结构开头的必须元素 ：th(?:is|at) 替代 this|thiat
* 独立出起始锚点^ ： ^(?:abc|123) 替代 ^abc|^123
* 将最有可能匹配的多选分支放到前头（先迈最好使的腿）
