Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net Reg Exp优化_.net_Regex_Optimization - Fatal编程技术网

.net Reg Exp优化

.net Reg Exp优化,.net,regex,optimization,.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(?:.*)) 谢谢在不知道您希望正则表达式做什么的情况下,很难对其进行优化,但您可以尝试传递给正则表达式构造函数。这将花费更长的时间来构造正则表达式对象,但这意味着它执行搜索的速度更快。在不知道您希

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

谢谢

在不知道您希望正则表达式做什么的情况下,很难对其进行优化,但您可以尝试传递给正则表达式构造函数。这将花费更长的时间来构造正则表达式对象,但这意味着它执行搜索的速度更快。

在不知道您希望正则表达式执行什么的情况下,很难对其进行优化,但您可以尝试传递给正则表达式构造函数。这将花费更长的时间来构造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.*

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

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

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

记录应以15位数字或字符开头,后跟一个特殊字符
[\x01]
,再后跟12位和
[\x01]
,后跟2位数字和任意6个字符,然后查找值(日期值的格式为小时-分钟-秒,不带任何
分隔文件中的小时、分钟和秒)介于130000和140059之间,这是下面提取的reg exp I的一部分,最后是值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选项,但没有多大改进


感谢所有提示,我将试用它们。同时,如果您有任何其他优化建议,欢迎使用。

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

记录应以15位数字或字符开头,后跟一个特殊字符
[\x01]
,再后跟12位和
[\x01]
,后跟2位数字和任意6个字符,然后查找值(日期值的格式为小时-分钟-秒,不带任何
分隔文件中的小时、分钟和秒)介于130000和140059之间,这是下面提取的reg exp I的一部分,最后是值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选项,但没有多大改进


谢谢你提供的所有建议,我会尝试一下。同时,如果你还有其他优化建议,欢迎提供。

是的,对不起,我犯了一个错误 时间部分介于130000和143059之间
我会试试你的解决方案,bluepnume。

是的,对不起,我搞错了 时间部分介于130000和143059之间
我会尝试一下你的解决方案,bluepnume。

如果你发布了它应该做的事情,那会很有帮助。也许你也应该发布一些你正在使用的代码。我认为你从优化正则表达式中获得的任何速度都是最低的,如果有的话。你确定你的正则表达式有瓶颈吗?
[\d\w]
是多余的。
\w
意味着
\d
。替换首字母
[\d\w]
\w
一起使用可能会对运行时产生相当大的影响。此外,如果您不需要单独的捕获组,请在选项参数中指定
RegexOptions.ExplicitCapture
。@Vimal:欢迎使用StackOverflow!如果您发布了它应该执行的操作,这将非常有用。也许您应该发布一些您需要的代码重复使用。我认为优化正则表达式的任何速度都是最小的,如果有的话。你确定你的正则表达式有瓶颈吗?
[\d\w]
是多余的。
\w
意味着
\d
。替换初始的
[\d\w]
\w
可能对运行时有相当大的影响。此外,如果您不需要单独的捕获组,那么请在选项参数中指定
RegexOptions.ExplicitCapture
。@Vimal:欢迎使用StackOverflow!
RegexOptions.Compiled
不是万能药。根据regex的使用方式,这两种方法的区别是:uld会使性能更差。
RegexOptions.Compiled
不是万能药。这可能会使性能更差,具体取决于regex的使用方式。