正则表达式以提取格式困难的URL

时间:2011-12-08 19:55:16

标签: python regex url hyperlink

我的问题类似于this one,但更复杂。

我试图弄清楚从文本文档中提取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)

有关优雅方法的任何想法吗?

1 个答案:

答案 0 :(得分:3)

你可以禁止句号作为最后一个符号:

m = re.findall("((http:|https:)//[^ \<]*[^ \<\.])",line)
相关问题