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