如何用python正则表达式匹配URL?

时间:2018-10-02 17:23:20

标签: python regex url

我的问题是,我想匹配HTML代码中的URL,看起来像这样:href='example.com'或使用",但是我只想提取实际的URL。我尝试匹配它,然后使用数组魔术仅获取该数组,但是由于正则表达式匹配是贪婪,因此,如果有多个有理匹配,则将有更多个以{ {1}},并以另一个URL '结尾。什么正则表达式可以满足我的需求?

2 个答案:

答案 0 :(得分:3)

我建议 使用正则表达式解析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'])

答案 1 :(得分:0)

如果您希望它使用正则表达式而不是其他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])