我是python的新手。我正在浏览gitHub上的一个存储库,我看到以下代码行从网页中提取所有URL。我理解正则表达式和捕获组,但我不明白为什么单引号中包含额外的双引号?
links = re.findall('"((http|ftp)s?://.*?)"', html)
也就是说,它与以下代码有什么不同?
links = re.findall('((http|ftp)s?://.*?)', html)
我尝试过实验,发现只有第一个匹配正确的URL语法,但第二个没有。但我不明白为什么。
感谢任何帮助。
谢谢。
答案 0 :(得分:1)
双引号是正则表达式的一部分。它们确保模式只有在实际被引号括起时才匹配;因此foo bar http://whatever.com
不匹配,但<a href="http://whatever.com">
会。
请注意,这是一种非常脆弱的处理方式,因为单引号在HTML中也有效但与正则表达式不匹配。