Guy
问问题
1197 次
2 回答
2
匹配是匹配正则表达式的字符串的一部分,因此在一个字符串中可能有多个匹配项。
在 Match 中,您可以定义匿名或命名组,以便更轻松地拆分匹配。一个简单的例子是创建一个正则表达式来搜索 URL,然后使用其中的组来查找协议 (http)、域 (www.web.com)、路径 (/lol/cats.html) 和参数等等。
// Example I made up on the spot, probably doesn't work very well
"(?<protocol>\w+)://(?<domain>[^/]+)(?<path>/[^?])"
正如我所说,可以在字符串中多次找到单个模式,因此如果您使用 Regex.Matches(string text) 您将获得多个匹配项,每个匹配项由零个、一个或多个组组成。
可以通过按数字或字符串进行索引来找到这些命名组。上面的例子可以这样使用:
Match match = pattern.Match(urls);
if (!match.Success)
continue;
string protocol = match.Groups["protocol"].Value;
string domain = match.Groups[1].Value;
为了让事情变得更有趣,一组可以匹配多次,但我建议开始阅读文档。
您还可以使用组来生成反向引用,并进行部分搜索和替换,但请阅读MSDN上的更多内容。
于 2008-08-26T22:58:42.847 回答