Мой вопрос похож на этот , но более сложный.
Я пытаюсь найти регулярное выражение для извлечения URL-адресов из текстового документа.Хитрость заключается в том, что некоторые URL-адреса встроены в предложения с более сложным для анализа форматированием.Вот пример текста, из которого я хотел бы извлечь URL:
<p>There are several links of the general format http://www.foo.com/index.html.</p>
<p>There are many websites (e.g. http://www.foo.com/abc/def?a=2&b=3) that end oddly: http://www.foo.com/results</p>
В этих примерах первый URL имеет конечный период предложения, следующий сразу за ссылкой, которую необходимо исключить.Вторая ссылка имеет правую круглую скобку в конце URL-адреса, а третья заканчивается, когда она попадает в тег HTML.
Для моих целей точка (и правая круглая скобка) является допустимым символом URL, если толькосамый последний персонаж.Короче говоря, проблема заключается в том, как обращаться с символами, которые являются допустимыми в строке, только если они не являются последним символом в строке.
Мое текущее регулярное выражение, которое не может иметь дело с этим случаем, (вPython):
m = re.findall("((http:|https:)//[^ \<]+)",line)
Есть какие-нибудь мысли по поводу элегантных способов борьбы с этим?