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

时间:2010-07-07 17:09:40

标签: c# regex

我有一个像这样的正则表达式

something (.*) someotherthing

如何使用Regex对象匹配整个表达式并获取捕获的值?

3 个答案:

答案 0 :(得分:3)

以下是我认为你要求的一个例子:

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 :(得分:2)

您可以使用$1来获取该组,您可以使用$0来获取整个表达式。

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

类似地,Match.Groups property应该使用0作为参数来返回整个匹配,否则Capture.Value看起来包含匹配。


另外值得注意的是,为了确保您的测试字符串与整个表达式匹配,通常最好使用^作为前缀,并使用$作为零宽度位置锚点的后缀。字符串的开头和结尾。 (在多行模式下也是行的开始/结束。)

答案 2 :(得分:1)