我有一个像这样的正则表达式
something (.*) someotherthing
如何使用Regex对象匹配整个表达式并获取捕获的值?
答案 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)