首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex快速迭代MatchCollection指数

Regex快速迭代MatchCollection指数
EN

Stack Overflow用户
提问于 2014-10-31 21:25:11
回答 1查看 793关注 0票数 3

如何最有效地迭代每个MatchCollection索引属性?我的代码中有许多Regex对象,我需要迭代所有Match索引,但是在VS分析器中,我看到了一个简单的Linq查询

代码语言:javascript
复制
regex.Matches(text).Cast<Match>().Select(x => x.Groups[1].Index)

内部功能:

代码语言:javascript
复制
IEnumerator.MoveNext()

几乎需要一半的执行时间。有办法硬编码这个吗?可能指针通过内部结构或其他一些方法来避免IEnumerable<T>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-31 23:13:06

正如@L.B已经指出的,Linq表达式受https://stackoverflow.com/questions/2515796/deferred-execution-and-eager-evaluation约束。也就是说,如果您在每一步迭代您的MatchCollection,您的Regex将被执行以提供下一个Match,这很可能会影响您观察到的性能。

事实上,Regex相当重。但是,您可以通过一些调整来提高性能(请参阅best practices)。

您可能要尝试的是应用已编译的Regex

代码语言:javascript
复制
Regex comp10 = new Regex(pattern, RegexOptions.Compiled);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26683623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档