我的问题类似于this one , 但更复杂。
我正在尝试找出一个正则表达式来从文本文档中提取 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)
对处理这个问题有什么优雅的想法吗?
请您参考如下方法:
你可以像这样禁止句号作为最后一个符号:
m = re.findall("((http:|https:)//[^ \<]*[^ \<\.])",line)
