MatchCollection和Regex匹配奇怪的行为

时间:2014-07-01 14:51:43

标签: c# regex

当我尝试使用正则表达式来分割字符串时,.Matches返回的MatchCollection只包含它自己的字符串而不包含该字符串。

所以这是我的正则表达式:string pattern = @"^(\w[.])\s*(\w+)$";

和示例字符串:W.Test

我希望MatchCollection有2个元素W.Test,但看起来它不起作用。

2 个答案:

答案 0 :(得分:6)

您需要从捕获组返回匹配的上下文。 Groups属性获取正则表达式中捕获的组。

string pattern = @"^(\w[.])\s*(\w+)$";
string input = "W.Test";

Match match = Regex.Match(input, pattern);

if (match.Success) {
 Console.WriteLine(match.Groups[1].Value); //=> 'W.'
 Console.WriteLine(match.Groups[2].Value); //=> 'Test'
}

答案 1 :(得分:2)

试试这个

Match match = Regex.Match(input, @" ^(?<firstGroup>\w[.])\s*(?<SecondGroup>\w+)$", RegexOptions.IgnoreCase);

var firstGroup = match.Groups["firstGroup"].Value