По какой-то причине следующее регулярное выражение не ведет себя так, как я ожидал.Поиск ссылок с пробелами с регулярным выражением
Я пытаюсь извлечь все ссылки из html-объявления, хотя я не могу найти способ правильно обрабатывать ссылки с пробелами.
Я знаю, что ссылки должны быть закодированы, но невозможно кодировать ссылки, если я не могу их найти.
Я тестирую этот html - обратите внимание, что единственное различие - это пробел в {вашей ссылке}.
Find out <a href="http://website.co.uk?element=1&reference={your reference}"><span style="color:#000000;">what something is here</span></a><span style="color:#000000;">.</span><br />
Find out <a href="http://website.co.uk?element=1&reference={yourreference}"><span style="color:#000000;">what something is here</span></a><span style="color:#000000;">.</span><br />
С следующего регулярного выражения можно получить только ссылку без пробелов, как ожидается:
href="http(s{0,1}):\/\/(\S+)"
Находки:
href="http://website.co.uk?element=1&reference={yourreference}"
Однако, если я изменю \ S к. Я ожидаю, что чек, чтобы вернуть ссылку до закрытия», но он по-прежнему почти до конца строки:
href="http(s{0,1}):\/\/(.+)"
Находки:
href="http://website.co.uk?element=1&reference={your reference}"><span style="color:#000000;">what something is here</span></a><span style="color:#000000;"
href="http://website.co.uk?element=1&reference={yourreference}"><span style="color:#000000;">what something is here</span></a><span style="color:#000000;"
У меня также есть ряд различные проверки, чтобы подобрать различные ссылки, заключительный выглядит следующим образом:
(href="|href=\')%%siteurl%%(\S*)("|\')
|href="www\.(\S+)"
|href="http(s{0,1}):\/\/(\S+)"
|href=\'www\.(\S+)\'
|href=\'http(s{0,1}):\/\/(\S+)\'
Я не ищу помощи для этого набора, только оригинальное регулярное выражение, и я отрегулирую остальные соответственно.
Отлично, спасибо за быстрый ответ! –