【问题标题】:Regular expression to extract URLs with difficult formatting正则表达式提取格式困难的 URL
【发布时间】:2012-01-16 05:36:20
【问题描述】:

我的问题类似于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)

对处理这个问题的优雅方法有什么想法吗?

【问题讨论】:

标签: python regex url hyperlink


【解决方案1】:

您可以像这样禁止句号作为最后一个符号:

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

【讨论】:

  • 哇,我绝对没有想到这一点。非常简单的解决方案。谢谢!
猜你喜欢
  • 2012-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-17
  • 1970-01-01
  • 2018-11-28
  • 2023-03-27
相关资源
最近更新 更多