首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Reg Exp优化

Reg Exp优化
EN

Stack Overflow用户
提问于 2011-05-17 21:28:24
回答 4查看 141关注 0票数 0

我需要优化下面的reg exp,以便它执行得更快。有人能帮上忙吗?

代码语言:javascript
复制
([\d\w]{15}[\x01]\d{12}[\x01]\d{2}(.){6}((13((0[0-9]|([1-4][0-9])|5[0-9]))|14((0[0-9]|([1-2][0-9])|30)))[0-5][0-9])801(?:.*))

谢谢

EN

回答 4

Stack Overflow用户

发布于 2011-05-17 22:08:05

这是一个优化的版本:删除了大量冗余的字符类和字符组。归根结底,最好知道regex应该做什么。

代码语言:javascript
复制
\w{15}\x01\d{12}\x01\d{2}.{6}(13[0-5]\d|14([0-2]\d|30))[0-5]\d801.*

编辑:根据您的新信息,您可以将其进一步缩减为:

代码语言:javascript
复制
\w{15}\x01\d{12}\x01\d{2}.{6}(13[0-5]\d|1400)[0-5]\d801.*
票数 3
EN

Stack Overflow用户

发布于 2011-05-17 21:43:44

如果不知道您的正则表达式要做什么,就很难对其进行优化,但您可以尝试将RegexOptions.Compiled传递给正则表达式构造函数。这将花费更长的时间来构造正则表达式对象,但这意味着它可以更快地执行搜索。

票数 0
EN

Stack Overflow用户

发布于 2011-05-19 12:52:20

reg exp在文本文件中搜索具有以下格式和值的记录:

记录应以15个数字或字符开头,然后是特殊字符[\x01],然后是12个数字和[\x01],然后是2个数字和任意6个字符,然后查找介于130000和140059之间的值(日期值的格式为小时、分钟、秒,文件中没有任何:.分隔小时、分钟和秒),这是我在下面提取的reg exp的一部分,最后是值801和后面可能跟随的任意数量的字符。

代码语言:javascript
复制
((13((0[0-9]|([1-4][0-9])|5[0-9]))|14((0[0-9]|([1-2][0-9])|30)))[0-5][0-9])

希望我在这里说得很清楚,可以理解。

此外,我在reg exp的开头添加了^,并在结尾添加了$。

我也使用了RegexOptions.Compiled选项,但没有太大的改进。

谢谢你的建议,我会试一试的。同时,如果您有任何更多的优化建议,欢迎您。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6031493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档