VB.NET正则表达式

时间:2013-10-12 04:59:12

标签: regex vb.net

我有这个HTML代码:

<td class="Class 1">Example</td><td class="Class2">Other Example</td>

我试图在VB.NET中使用正则表达式来提取“示例”和“其他示例”

Dim parsedtext As MatchCollection = Regex.Matches(htmlcode, ">(.+)<)

(htmlcode变量包含上面提到的html代码作为字符串。)

然而,看着 parsedtext(0).Groups(0) 它返回“>Example</td><td class="Class2">Other Example<"。我不明白为什么会发生这种情况,我已经尝试了很多其他模式字符串,无法解决这个问题。如何在两个特定字符之间提取所有文本,例如&gt;和&lt;在上面的例子中?

1 个答案:

答案 0 :(得分:1)

我同意@ColeJohnson(此时不允许其他人相信),但这是教导贪婪与非贪婪匹配概念的一个很好的例子。

默认情况下,正则表达式量词(+*?)尽可能地“吃掉”,而只有少量部分比赛失败。这叫做贪心匹配。要使 -greedy,您使用非贪婪量词+?*???

即,

">(.+?)<"

换句话说,在找到.+之前,您的<继续匹配尽可能多的字符;所以你看,你的输出是预期的。但是,如果假设它 找不到最后<,则回溯到最后一次“看到”<