千家信息网

正则表达式性能优化方法有哪些

发表于:2024-10-19 作者:千家信息网编辑
千家信息网最后更新 2024年10月19日,这篇文章将为大家详细讲解有关正则表达式性能优化方法有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。这里说的正则表达式优化,主要是针对目前常用的NFA模式正则表达
千家信息网最后更新 2024年10月19日正则表达式性能优化方法有哪些

这篇文章将为大家详细讲解有关正则表达式性能优化方法有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

这里说的正则表达式优化,主要是针对目前常用的NFA模式正则表达式,详细可以参考:正则表达式匹配解析过程探讨分析(正则表达式匹配原理)。从上面例子,我们可以推断出,影响NFA类正则表达式(常见语言:GNU Emacs,Java,ergp,less,more,.NET语言,
PCRE library,Perl,PHP,Python,Ruby,sed,vi )其实主要是它的"回溯",减少"回溯"次数(减少循环查找同一个字符次数),是提高性能的主要方法。 我们来看个例子:

源字符串:

匹配要求,匹配….标签里面所有内容,包括改标签

常见写法(1),因为

正则表达式:.*? (测试工具使用了:regexBuddy)

总共花费115步,回溯了:48次。 因为我们使用"."字符,匹配默认情况下除了\n之外所有字符。
方法(2),我们分析特点发现,后面,应该是除了">"之外都可以字符,然后一对

19步,0次回溯! ,步骤只有原先的15%左右,性能几倍的提升了!
从上面我们看到,不同正则表达式,对通用字符配平,性能相差会很大。减少"回溯"是最好的方法,减少回溯其中最主要的方法是:"用最小范围的元字符,尽量避免用过大的元字符!"。一般规律如下:

1、使用正确的边界匹配器(^、$、\b、\B等),限定搜索字符串位置
2、使用具体的元字符、字符类(\d、\w、\s等) ,少用"."字符
3、使用正确的量词(+、*、?、{n,m}),如果能够限定长度,匹配最佳
4、使用非捕获组、原子组,减少没有必要的字匹配捕获用(?:)

如:我想匹配一些英文字母,它后面接的是数字。如:abc1234,我可以写 "\w+\d+",也可以写"[a-zA-Z]+\d+" ,其中第一个\w+会先匹配所有abc1234,然后回溯,匹配满足\d+格式。一共4步,而后面这个只需要2步,步骤减少一半了!好了,今天就先到这里,欢迎大家讨论、交流!

关于"正则表达式性能优化方法有哪些"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

字符 正则 表达式 方法 性能 标签 元字符 内容 常见 篇文章 例子 字符串 更多 次数 步骤 语言 分析 参考 不同 不错 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 哪个服务器比较好魔兽世界 简笔画网络安全图画简单又漂亮 渝北区常规软件开发流程要求 绍兴青年软件开发有限公司总经理 河南许昌网络安全宣传 软件开发什么方向好 嘉定区智能化软件开发好处 军事信息网络安全体系 云服务器专业安全软件下载 kpl跟我们玩的是一个服务器吗 蓝兔子互联网科技 网络安全认识体会 周鹏中国篮球数据库 互联网科技圈的悲哀人物 江西网络时钟同步服务器云主机 数据库时间字段截取年月 世界互联网领先科技成果要求 深圳市千寻网络技术公司 智能家居控制系统软件开发 服务器模组怎么使用 乌鲁木齐app手机软件开发 松江区智能软件开发成本 网络安全行政处罚适用 数据库不等一 怎么写 1062数据库错误 全国网络安全学习中心 黑龙江电信服务器云空间 高新园区网络安全管理 软件开发企业创办经历 登录服务器未响应 您可能
0