我对 .NET 正则表达式及其定义匹配的方式有疑问。 我在写:
var regex = new Regex("<tr><td>1</td><td>(.+)</td><td>(.+)</td>");
if (regex.IsMatch(str))
{
var groups = regex.Match(str).Groups;
var matches = new List<string>();
for (int i = 1; i < groups.Count; i++)
matches.Add(groups[i].Value);
return matches;
}
我想要的是获取下面两个标签的内容。相反,它返回:
[0]: Cell 1</td><td>Cell 2</td>... [1]: Last row of the table
为什么第一个匹配的是 和字符串的其余部分而不是在 处停止?
请您参考如下方法:
你的正则表达式包括
(.+)
这是一个贪心匹配。在匹配下一个字符(在您的情况下为 <)之前,贪婪匹配尽可能地扩展远。尝试:
(.+?)
这是一个非贪婪匹配,在匹配下一个字符之前尽可能少扩展。
