2015-06-24 3 views
1

По какой-то причине следующее регулярное выражение не ведет себя так, как я ожидал.Поиск ссылок с пробелами с регулярным выражением

Я пытаюсь извлечь все ссылки из html-объявления, хотя я не могу найти способ правильно обрабатывать ссылки с пробелами.

Я знаю, что ссылки должны быть закодированы, но невозможно кодировать ссылки, если я не могу их найти.

Я тестирую этот html - обратите внимание, что единственное различие - это пробел в {вашей ссылке}.

Find out <a href="http://website.co.uk?element=1&amp;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&amp;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&amp;reference={yourreference}" 

Однако, если я изменю \ S к. Я ожидаю, что чек, чтобы вернуть ссылку до закрытия», но он по-прежнему почти до конца строки:

href="http(s{0,1}):\/\/(.+)" 

Находки:

href="http://website.co.uk?element=1&amp;reference={your reference}"><span style="color:#000000;">what something is here</span></a><span style="color:#000000;" 

href="http://website.co.uk?element=1&amp;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+)\' 

Я не ищу помощи для этого набора, только оригинальное регулярное выражение, и я отрегулирую остальные соответственно.

ответ

1
href="http(s{0,1}):\/\/(.+?)" 

          ^^ 

Сделайте quantifier не жадным.

+1

Отлично, спасибо за быстрый ответ! –

Смежные вопросы