我需要优化下面的reg exp,以便它执行得更快。有人能帮上忙吗?
([\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(?:.*))谢谢
发布于 2011-05-17 22:08:05
这是一个优化的版本:删除了大量冗余的字符类和字符组。归根结底,最好知道regex应该做什么。
\w{15}\x01\d{12}\x01\d{2}.{6}(13[0-5]\d|14([0-2]\d|30))[0-5]\d801.*编辑:根据您的新信息,您可以将其进一步缩减为:
\w{15}\x01\d{12}\x01\d{2}.{6}(13[0-5]\d|1400)[0-5]\d801.*发布于 2011-05-17 21:43:44
如果不知道您的正则表达式要做什么,就很难对其进行优化,但您可以尝试将RegexOptions.Compiled传递给正则表达式构造函数。这将花费更长的时间来构造正则表达式对象,但这意味着它可以更快地执行搜索。
发布于 2011-05-19 12:52:20
reg exp在文本文件中搜索具有以下格式和值的记录:
记录应以15个数字或字符开头,然后是特殊字符[\x01],然后是12个数字和[\x01],然后是2个数字和任意6个字符,然后查找介于130000和140059之间的值(日期值的格式为小时、分钟、秒,文件中没有任何:或.分隔小时、分钟和秒),这是我在下面提取的reg exp的一部分,最后是值801和后面可能跟随的任意数量的字符。
((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选项,但没有太大的改进。
谢谢你的建议,我会试一试的。同时,如果您有任何更多的优化建议,欢迎您。
https://stackoverflow.com/questions/6031493
复制相似问题