我应该创建一个复杂的RegEx来处理所有现有案例,还是应该在多个正则表达式中打破一个复杂的RegEx?
我关注使用复杂正则表达式的性能。 将复杂的Regex打造成更小的简单正则表达式会更好吗?
答案 0 :(得分:4)
如果您想要对性能问题做出有意义的回答,则需要对两种情况进行基准测试。
关于可读性/可维护性,您可以使用任何语言编写不可读的代码,因此您可以使用正则表达式。如果你写一个大的,请务必使用x
修饰符(c#中的IgnorePatternWhitespace
)并使用注释来构建正则表达式。
我在c#
中的一个过去答案中随机选择的示例:
MatchCollection result = Regex.Matches
(testingString,
@"
(?<=\$) # Ensure there is a $ before the string
[^|]* # Match any character that is not a |
(?=\|) #Till a | is ahead
"
, RegexOptions.IgnorePatternWhitespace);
答案 1 :(得分:2)
由于编译器优化,我认为现在不会有太大差异,但是,使用简单的方法可以更容易理解代码,从而使维护更容易。
答案 2 :(得分:-1)
复杂的正则表达式可能非常慢,但它取决于您的正则表达式和您的环境。以string.trim()为例。它可以通过正则表达式轻松实现。您可以使用一个正则表达式或两个正则表达式(分别删除前面和后面的空格)。这里有人采用了11种不同的javascript修剪实现,并在不同的浏览器中对它们进行了基准测试:http://blog.stevenlevithan.com/archives/faster-trim-javascript。在这种情况下,一个正则表达式在大多数情况下都会失去很多时间。