【发布时间】:2014-10-31 21:25:11
【问题描述】:
如何最有效地迭代每个 Match 的 MatchCollection Index 属性?我的代码中有很多 Regex 对象,我需要遍历所有 Match 索引,但在 VS 分析器中,我看到一个简单的 Linq 查询
regex.Matches(text).Cast<Match>().Select(x => x.Groups[1].Index)
和内部函数:
IEnumerator.MoveNext()
几乎占用了一半的执行时间。有什么方法可以硬编码吗?也许指针会跳过内部结构或其他一些方法来避免IEnumerable<T>?
【问题讨论】:
-
我强烈怀疑花费最多时间的部分实际上是:
regex.Matches(text)(正则表达式匹配本身) -
但是分析器说的 MoveNext 是最消耗量的功能...
-
@eocron 由于延迟执行,您的正则表达式在您开始枚举之前不会运行。但真正的问题并不存在。