"<div class=\"standings-rank\">([0-9]{1,2})</div>"
这是我的正则表达式。我想匹配它,但C#返回类似
的东西"<div class=\"standings-rank\">1</div>"
当我想得到
时"1"
我怎样才能让C#回到正确的位置?
答案 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。