【发布时间】:2011-10-07 08:25:23
【问题描述】:
我有一个带有 n 个“a href”标签的 html 文档,这些标签具有不同的目标 url 和标签之间的不同文本。
例如:
<a href="http://www.example.com/d?12345abc" name="example"><span ....>lorem ipsum</span></a>
<a href="http://www.example.com/d/d?abc1234" name="example2"><span ....>example</span></a>
<a href="http://www.example.com/d.1234" name="example3">example3</a>
<a href="http://www.example.com/d/d.1234" name="example4"><img ...>test</img></a>
<a href="http://www.example.com/without_d/1234" name="example3">without a d as target url</a>
如您所见,目标网址在“d?, d., d/d?, d/d.”之间切换。在“a 标签”之间可以有 w3c 允许的任何类型的 html。
我需要一个正则表达式,它为我提供在目标 url 中具有以下组合之一的所有链接: “d?,d.,d/d?,d/d。”并且在任何位置的“a标签”之间有“Lorem”或“test”,包括子html标签。
到目前为止我的正则表达式:
href=[\"\']([^>]*?/[d]+[.|\?][^"]*?[\"\'][^>]*[/]?>.*?</a>)
我尝试如下包含 lorem / 测试:
href=[\"\']([^>]*?/[d]+[.|\?][^"]*?[\"\'][^>]*[/]?>(lorem|test)+</a>)
但这只有在我输入“。*?”时才有效。在 (lorem|test) 之前和之后,这将是贪婪的。
如果 SimpleXml 或任何其他 DOM 解析器有更简单的方法,请告诉我。否则,我将不胜感激任何有关正则表达式的帮助。
谢谢!
【问题讨论】: