概述
这里说的正则表达式优化,主要是针对目前常用的NFA模式正则表达式,详细可以参考: 正则表达式匹配解析过程探讨分析(正则表达式匹配原理) 。
从上面我们看到,不同正则表达式,对通用字符配平,性能相差会很大。减少“回溯”是最好的方法,减少回溯其中最主要的方法是:”用最小范围的元字符,尽量避免用过大的元字符!”。一般规律如下:
1、使用正确的边界匹配器(^、$、b、B等),限定搜索字符串位置
2、使用具体的元字符、字符类(d、w、s等) ,少用”.”字符
3、使用正确的量词(+、*、?、{n,m}),如果能够限定长度,匹配最佳
4、使用非捕获组、原子组,减少没有必要的字匹配捕获用(?:)
如:我想匹配一些英文字母,它后面接的是数字。如:abc1234,我可以写 “w+d+”,也可以写”[a-zA-Z]+d+” ,其中第一个w+会先匹配所有abc1234,然后回溯,匹配满足d+格式。一共4步,而后面这个只需要2步,步骤减少一半了!好了,今天就先到这里,欢迎大家讨论、交流!
转载自:http://blog.chacuo.net/329.html
最后
以上就是机灵跳跳糖为你收集整理的正则表达式性能提高的全部内容,希望文章能够帮你解决正则表达式性能提高所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复