为什么有些人说Regex效率低下,真的那么糟糕吗?

时间:2011-10-11 16:19:42

标签: c# regex

所以,我听说有些人说正则表达式非常低效且速度慢(我特别听说它与C#有关)。 Regex的速度是否正确,是否真的与它们实现的一样糟糕?

如果速度很慢,我应该在大规模应用中使用什么?

3 个答案:

答案 0 :(得分:2)

  

所以,我听说有人说正则表达式非常低效且速度慢

那不是真的。至少在所有情况下都不是这样。只是有些任务可能比正则表达式更适合工具。但声称这样的事情并得出这样的结论是完全错误的。在某些情况下,正则表达式完全正常。

答案 1 :(得分:1)

你必须适当地使用它。不应该是if all you have is a hammer, everything looks like a nail

的情况

正则表达式重量大,功能强大,确实会对性能产生影响。你不应该使用简单的操作,比如像substring这样的字符串操作就足够了。并且你不应该将它们用于非常复杂的东西,因为你同时获得了性能,更重要的是可读性。

你绝对不应该尝试使用正则表达式来处理xml,html等并使用适当的解析器。

底线:这是一个工具。将它放在您的工具包中,并适当地使用它。

答案 2 :(得分:0)

正则表达式不如适用于特定情况的其他技术有效。

然而,这并不意味着不应该使用它们。如果它们为您的特定应用提供足够的性能,那么使用它们就可以了。如果您的应用程序性能不足,请进行一些测试以确定问题的原因,而不是仅仅消除所有正则表达式。

此外,有一些聪明的方法可以使用正则表达式。例如,如果您经常执行相同的操作,则缓存并重用正则表达式对象,而不是每次使用它时重新创建它。