re表达式(python)中单引号内的双引号

时间:2016-07-10 19:46:09

标签: python regex python-requests

我是python的新手。我正在浏览gitHub上的一个存储库,我看到以下代码行从网页中提取所有URL。我理解正则表达式和捕获组,但我不明白为什么单引号中包含额外的双引号?

links = re.findall('"((http|ftp)s?://.*?)"', html)

也就是说,它与以下代码有什么不同?

links = re.findall('((http|ftp)s?://.*?)', html)

我尝试过实验,发现只有第一个匹配正确的URL语法,但第二个没有。但我不明白为什么。

感谢任何帮助。

谢谢。

1 个答案:

答案 0 :(得分:1)

双引号是正则表达式的一部分。它们确保模式只有在实际被引号括起时才匹配;因此foo bar http://whatever.com不匹配,但<a href="http://whatever.com">会。

请注意,这是一种非常脆弱的处理方式,因为单引号在HTML中也有效但与正则表达式不匹配。