正则表达式优化

时间:2011-05-17 13:28:24

标签: .net regex optimization

我需要优化以下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(?:.*))

由于

4 个答案:

答案 0 :(得分:3)

这是一个优化版本:删除了大量冗余字符类和组。最终,知道正则表达式应该做什么会更好。

\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.*

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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选项,但没有太大改进。

感谢所有的提示,我会尝试一下。与此同时,如果您有任何更优化的建议,最受欢迎。

答案 3 :(得分:0)

对不起,我的错误 时间部分在130000和143059之间 我会尝试你的解决方案,bluepnume。