import re
# url通用匹配
url_regex = re.compile('<a[^>]+href=["\'](.*?)["\']', re.IGNORECASE)
# test
url_str = "<a type='akfdf' href='http://www.itmeng.top' xxxx>hahah</a>"
result = url_regex.findall(url_str)
print(result)
# ---------运行结果------------
>>> print(result)
['http://www.itmeng.top']
来源:
正则表达式30分钟入门教程
.?的理解:
有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符。前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号?。这样.?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。现在看看懒惰版的例子吧:
a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab(第一到第三个字符)和ab(第四到第五个字符)。
[^<] 的理解:
[^x] 匹配除了x以外的任意字符