У меня есть HTML-документ с n тегами "href" с разными целевыми 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>
Как вы видите, целевые URL переключаются между "d ?, d., D / d ?, d / d." и между тегом может быть html любого типа, который разрешен w3c.
Мне нужно регулярное выражение, которое дает мне все ссылки, которые имеют одну из этих комбинаций в целевом URL:
"д ?, д., д / д ?, д / д." и имеет «Lorem» или «тест» между «тегами a» в любой позиции, включая теги sub html.
Мое Регекс до сих пор:
href=[\"\']([^>]*?/[d]+[.|\?][^"]*?[\"\'][^>]*[/]?>.*?</a>)
Я попытался включить лорем / тест следующим образом:
href=[\"\']([^>]*?/[d]+[.|\?][^"]*?[\"\'][^>]*[/]?>(lorem|test)+</a>)
но это будет работать только если я поставлю ". *?" до и после (lorem | test) и это было бы жадным.
Если есть более простой способ с SimpleXml или любым другим анализатором DOM, пожалуйста, дайте мне знать. В противном случае я был бы признателен за любую помощь с регулярным выражением.
Спасибо!