在一行Regex如果我想捕获所有直到行结束..哪些在性能方面会更好?
Regex r = new Regex(".+");
OR
Regex r = new Regex("[^$]+$");
我没有包括整个正则表达式,但我希望你明白这一点。
是否有任何权衡或两者的行为方式相同?
谢谢!
答案 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)
我怀疑你误解了第二个正则表达式[^$]+
实际上是做什么的。它匹配文字$
以外的一个或多个字符。所以它将匹配整个字符串,包括换行符。所以它做了与.+
匹配不同的事情。因此,它们不能相互比较。