【发布时间】:2011-08-10 14:03:18
【问题描述】:
我有一些页面内容包含以下代码行的多次出现:
<li class="r"><h3><a href="/test-url.htm">test string</a></h3></li>
我正在使用 .NET Regex 来查找内容中的所有匹配项并将锚标记的 href 返回给我。
我的问题是,有时 <li> 在类周围有引号(如上所示),但其他人没有,只有:class=r
我需要对带引号和不带引号的匹配项。
我尝试了各种方法,但似乎都没有奏效。有引号时它们都匹配,但没有引号时不匹配。以下是我目前的尝试:
Regex _Regex = new Regex(@"<li class=(?:"")g([^>])*>((?!<h3).)*<h3([^>])*><a\shref=""(?<URL>[^""]*)""([^>])*>((?!</li).)*", RegexOptions.IgnoreCase);
非常感谢任何帮助,
谢谢。
【问题讨论】:
-
Regex 不太擅长处理 HTML。如果您只是想查找重复项,则最好使用 xpath
-
我知道我没有回答你的问题,但你不应该使用正则表达式来解析 HTML。改用Html Agility Pack 会更好。
-
+1 这个想法,非常好用。
-
感谢您的评论。 Html Agility Pack 是否需要有效的 HTML?我打开了
<li>没有关闭</li>的几个地方,我无法控制内容以使其有效。 -
@Scrooby 它相当宽容 - 试试看。