为什么Regex.Match没有GetEnumerator函数?

时间:2009-11-18 20:03:39

标签: c# .net regex .net-3.5 standards

Regex.Match有.Success和.NextMatch为什么它没有GetEnumerator函数?

凭借我的逻辑,它似乎很容易实现。但它不在3.5,所以任何人都可以告诉我为什么不呢?

foreach (var m in Regex.Match("dummy text", "mm")) error CS1579: foreach statement cannot operate on variables of type 'System.Text.RegularExpressions.Match' because 'System.Text.RegularExpressions.Match' does not contain a public definition for 'GetEnumerator'

3 个答案:

答案 0 :(得分:10)

也许你想要Regex.Matches

答案 1 :(得分:3)

Regex.Match 

返回字符串中匹配的模式的第一个实例。

你可能想要

Regex.Matches

,返回字符串中所有匹配项的MatchCollection。

MSDN Article on Regex.Match

答案 2 :(得分:2)

因为Match对象是不可变的(并且NextMatch()不会更改当前匹配的上下文,但会为您提供对下一个的引用,这与IEnumerable.MoveNext()不同)

但你可以这样做:

for (Match m=Regex.Match("dummy text", "mm"); m.Success; m=m.NextMatch()) {
    // loop code
}