У меня возникли проблемы с работой этого регулярного выражения, когда ссылка html не имеет href="http://www.example.com"
. <ul class='social'>(...)</ul>
всегда присутствует на каждой странице, но некоторые теги привязки пропускают атрибут href
.
Именно здесь мои попытки терпят неудачу, потому что, когда есть href=""
, я могу захватить группу с помощью
<a href="(.*?)" id="facebooklink" style="display:none;" class="facebook facebooklink" title="Become a fan on Facebook">Become a fan on Facebook<span></span></a>
С другой стороны, когда случай подобен приведенному ниже, если один или несколько href
отсутствуют, он не будет захватывать даже те, которые имеют атрибут и значение href
. В моем примере ниже он должен захватить как минимум группу https://twitter.com/StackOverflow.
Регулярное выражение, которое я использую, можно увидеть здесь: https://regex101.com/r/iJ9tC7/12
<ul class="social">
<li>
<a id="facebooklink" style="display:none;" class="facebook facebooklink" title="Become a fan on Facebook">Become a fan on Facebook<span></span></a>
</li>
<li>
<a href="https://twitter.com/StackOverflow" id="twitterlink" style="display:none;" class="twitter twitterlink" title="Follow us on Twitter">Follow us on Twitter<span></span></a>
</li>
<li>
<a id="linkedinlink" style="display:none;" class="linkedin linkedinlink" title="Follow us on LinkedIn">Follow us on LinkedIn<span></span></a>
</li>
</ul>
Заранее спасибо за любую помощь здесь с этой проблемой, которую я перепробовал так много возможных решений, но не для правильного.
/<ul class="social">(.*)<\/ul>/gUms
и не искать каждую ссылку с чем-то вроде/<a href="(.*?)" id="twitterlink"/gUms
. Оберните его функцией, чтобы вернуть карту трех адресов ссылок. 29.04.2018