如何匹配和捕获在C#中的正则表达式

问题描述:

我有一个正则表达式这样如何匹配和捕获在C#中的正则表达式

something (.*) someotherthing 

如何使用正则表达式对象相匹配的整个表达式,并得到捕获的价值?

这里是什么,我认为你的例子所要求的:

Match m = Regex.Match("something some stuff in the middle someotherthing", 
     "something (.*) someotherthing"); 
if (m.Success) 
    Console.WriteLine("groups={0}, entire match={1}, first group={2}", 
         m.Groups.Count, m.Groups[0].Value, 
         m.Groups[1].Value); 

哪些地方可以使用$1获得该组中,您可以使用$0让整个表达式。

这适用于大多数正则表达式变体(可能是\0%0或其他),而不仅仅是C#。

同样,Match.Groups property应该以0作为参数,返回整个匹配,否则Capture.Value看起来像包含匹配。


另外值得一提的,以确保您的测试字符串的整个则表达式匹配,它通常是前面加上^和后缀与$这对于开始和字符串的结尾零宽度位置锚是个好主意。 (也启动/在多行模式行尾。)