Regex r = new System.Text.RegularExpressions.Regex("(\\d+)(\\w)");
Match m = r.Match(" 123x ");
MessageBox.Show(m.Captures.Count.ToString());
MessageBox.Show(m.Captures[0].Value);
MessageBox.Show(m.Captures[1].Value);
这在运行时给我异常
答案 0 :(得分:2)
Match.Captures
确实是Group.Captures
,因为Match
继承自Group
,所以它指的是全局组(组0
)的捕获。 / p>
这可以在constructor of Match的源代码中看到,它在其中调用索引为0
的基础构造函数。
internal Match(Regex regex, int capcount, String text, int begpos, int len, int startpos)
: base(text, new int[2], 0, "0") {
...
}
您想要的是Match.Groups
,或更具体地m.Groups[1].Value
和m.Groups[2].Value
。
答案 1 :(得分:0)
string pattern = @"(\d+)(\w)";
string input = "123x 45w 63 94b";
MatchCollection matches = Regex.Matches(input, pattern);
Console.WriteLine(matches.Count);
Console.WriteLine(matches[0].Value);
Console.WriteLine(matches[1].Value);
这种检查多种方式请发布您的预期结果