正则表达式帮助C# - 。+ OR [^ $] + $

时间:2010-01-28 10:25:27

标签: c# regex performance

在一行Regex如果我想捕获所有直到行结束..哪些在性能方面会更好?

Regex r = new Regex(".+");

OR

Regex r = new Regex("[^$]+$");

我没有包括整个正则表达式,但我希望你明白这一点。

是否有任何权衡或两者的行为方式相同?

谢谢!

3 个答案:

答案 0 :(得分:4)

使用StringReader似乎更合适:

using (var reader = new StringReader(someString))
{
    string line;
    while ((line = reader.ReadLine()) != null)
    {
        // You capture the line here
    }
}

答案 1 :(得分:2)

您正在做的事情称为过早优化。性能很好,但您还应该保持代码简单可读
.+$表示“读到所有内容直到结束” - 很明显,为什么会让它复杂化?稍后,如果你的程序很慢,你 profile 它并试图找出原因(常见的瓶颈是数据查询和网络 - 但不要假设任何东西)。
这是为什么不过早优化的一个很好的例子;有良好的意图,你的代码复杂化并引入了错误:[^$]+$没有你的意思。

答案 2 :(得分:1)

我怀疑你误解了第二个正则表达式[^$]+实际上是做什么的。它匹配文字$以外的一个或多个字符。所以它将匹配整个字符串,包括换行符。所以它做了与.+匹配不同的事情。因此,它们不能相互比较。