【发布时间】:2008-08-26 22:23:25
【问题描述】:
【问题讨论】:
【问题讨论】:
匹配是匹配正则表达式的字符串的一部分,因此在一个字符串中可能有多个匹配项。
在匹配中,您可以定义匿名或命名组,以便更轻松地拆分匹配。一个简单的例子是创建一个正则表达式来搜索 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;
为了让事情更有趣,一组可以匹配多次,但我建议开始阅读documentation。
您还可以使用组来生成反向引用,并进行部分搜索和替换,但在MSDN 上阅读更多内容。
【讨论】: