如何在Python3 findall方法中使用条件正则表达式?

时间:2017-12-16 20:24:11

标签: regex python-3.x

我正在编写一个Python3程序,如下所示。我想捕获所有href属性,以便捕获双引号之间出现的任何数据。例如,< a href="...">< /a>

以下代码适用于此任务,但在查看来自多个站点的数据后,如果&#34;。&#34;那么仅在正则表达式中捕获数据会很好。是被捕集团的一部分。

因此,例如,如果返回的数据是: http://money.cnn.com,/ health,/ asia

我只想看:http://money.cnn.com

我尝试过各种各样的正则表达式断言,但问题是我想要包含句点以及将其用作过滤器。

我也意识到我可以使用后续的列表过滤器或列表理解过滤器来实现这一点,但我希望使用正则表达式来实现它。

这个正则表达似乎有效:

href=["\'](?=[^\.]*[\.])(.*?)["\']

但不在下面的Python代码中。 (另见:https://ibb.co/hQwjPm

import codecs
import re
response = urllib.request.urlopen('http://www.cnn.com').read()   
hrefs = re.findall(r'href=["\'](.*?)["\']', codecs.decode(response)) 

0 个答案:

没有答案