1. 程式人生 > >正則表示式效能提高

正則表示式效能提高

這裡說的正則表示式優化,主要是針對目前常用的NFA模式正則表示式,詳細可以參考:正則表示式匹配解析過程探討分析(正則表示式匹配原理)

從上面我們看到,不同正則表示式,對通用字元配平,效能相差會很大。減少“回溯”是最好的方法,減少回溯其中最主要的方法是:”用最小範圍的元字元,儘量避免用過大的元字元!”。一般規律如下:

1、使用正確的邊界匹配器(^、$、\b、\B等),限定搜尋字串位置

2、使用具體的元字元、字元類(\d、\w、\s等) ,少用”.”字元

3、使用正確的量詞(+、*、?、{n,m}),如果能夠限定長度,匹配最佳

4、使用非捕獲組、原子組,減少沒有必要的字匹配捕獲用(?:)

如:我想匹配一些英文字母,它後面接的是數字。如:abc1234,我可以寫 “\w+\d+”,也可以寫”[a-zA-Z]+\d+” ,其中第一個\w+會先匹配所有abc1234,然後回溯,匹配滿足\d+格式。一共4步,而後面這個只需要2步,步驟減少一半了!好了,今天就先到這裡,歡迎大家討論、交流!