C#正则表达式问题

时间:2011-07-10 00:12:42

标签: c# regex

"<div class=\"standings-rank\">([0-9]{1,2})</div>"

这是我的正则表达式。我想匹配它,但C#返回类似

的东西
"<div class=\"standings-rank\">1</div>"

当我想得到

"1"

我怎样才能让C#回到正确的位置?

2 个答案:

答案 0 :(得分:3)

使用Match.Groups[int]索引器。

Regex regex = new Regex("<div class=\"standings-rank\">([0-9]{1,2})</div>");
string str = "<div class=\"standings-rank\">1</div>";
string value = regex.Match(str).Groups[1].Value;

Console.WriteLine(value); // Writes "1"

答案 1 :(得分:2)

假设您的Regex声明如下:

 Regex pattern = new Regex("<div class=\"standings-rank\">([0-9]{1,2})</div>");

并通过Match方法测试所述正则表达式;那么你必须访问从索引1开始而不是索引0的匹配;

 pattern.Match("<div class=\"standings-rank\">1</div>").Groups[1].Value

这将返回预期值; index 0将返回整个匹配的字符串。

具体来说,请参阅MSDN

  

该集合包含一个或多个   System.Text.RegularExpressions.Group   对象。如果比赛成功,   集合中的第一个元素   包含Group对象   对应整个比赛。每   后续元素代表一个   捕获组,如果经常   表达包括捕获组。   如果匹配不成功,则   集合包含单个   System.Text.RegularExpressions.Group   Success属性为false的对象   并且其Value属性等于   的String.Empty。