【问题标题】:How to match URLs with python regular expression?如何将 URL 与 python 正则表达式匹配?
【发布时间】:2019-03-07 21:03:10
【问题描述】:

我的问题是,我想匹配 HTML 代码中的 URL,如下所示:href='example.com' 或使用 ",但我只想提取实际 URL。我尝试匹配它,然后使用数组魔法只获取数组,但由于正则表达式匹配是 greedy,如果有超过 1 个理性匹配,将会有更多从一个 @ 开始987654326@ 并以另一个 URL 的 ' 结尾。什么正则表达式可以满足我的需求?

【问题讨论】:

  • 所以你想要正则表达式首先检查href=,然后是你想要的地址是什么?是否需要 http、检查 www 或类似的东西?
  • 如果你在谷歌上搜索“Python regex URL”这个短语,你会发现教程可以比我们在此处的答案中更好地解释它。之后,我们应该会看到您正在使用的代码以及您遇到的特定 问题。 How to ask... the perfect question 在这里申请。
  • @Shan 任何 URL 都应该匹配,所以一个 (asterisk)(dot)(asterisk) - 格式是我想要使用的
  • 我想你会从这个问题的答案中获得乐趣:stackoverflow.com/questions/1732348/…
  • @DaniFoldi 所以......你刚刚在这里回答了你自己的问题?

标签: python regex url


【解决方案1】:

我会推荐 NOT 使用正则表达式来解析 HTML。如果你使用beautifulsoup 之类的东西,你的生活会轻松很多!

就这么简单:

from BeautifulSoup import BeautifulSoup

HTML = """<a href="https://firstwebsite.com">firstone</a><a href="https://secondwebsite.com">Ihaveurls</a>"""

s = BeautifulSoup(HTML)

for href in s.find_all('a', href=True): print("My URL: ", href['href'])

【讨论】:

  • 谢谢,它确实起到了作用!
【解决方案2】:

如果您希望它使用正则表达式而不是使用其他 python 库来解决它。这是解决方案。

import re
html = '<a href="https://www.abcde.com"></a>'
pattern = r'href=\"(.*)\"|href=\'(.*)\''
multiple_match_links = re.findall(pattern,html)
if(len(multiple_match_links) == 0):
     print("No Link Found")
else:
     print([x for x in list(multiple_match_links[0]) if len(x) > 0][0])

【讨论】:

  • 谢谢,有趣的是,无需库,只需几行即可。
猜你喜欢
  • 1970-01-01
  • 2019-03-08
  • 2015-09-14
  • 2021-12-31
  • 2015-01-16
  • 1970-01-01
  • 1970-01-01
  • 2015-05-30
  • 1970-01-01
相关资源
最近更新 更多