正则表达式没有在Python中显示预期

时间:2017-11-24 12:10:37

标签: python regex python-3.x

我有以下正则表达式\ssrc=(\"|\')([^\"|\']+)(\"|\')我在源代码中使用scrape网站获取图像。我想要的图像采用以下格式:

<img src="http://www.asite.com/content/icon_clown.gif"

<img src='essays.gif'

<img src="monty-python-(1).bmp"

<img src="gchq-certified.jpg"

我的正则表达式找到了它们但显示为:

('"', 'http://www.asite.com/content/icon_clown.gif', '"')

("'", 'essays.gif', "'")

('"', 'monty-python-(1).bmp', '"')

('"', 'gchq-certified.jpg', '"')

我希望他们像这样显示:

http://www.asite.com/content/icon_clown.gif

我需要正则表达式来匹配上面显示的所有4个图像源。

如果有人能指出我正确的方向,那就太好了。

1 个答案:

答案 0 :(得分:0)

您的正则表达式包含3个分组(..)。您可以通过访问结果的索引2(0表示全部,1表示第一个分组等)或仅在中间部分使用( )来获得中间部分。

E.g。像:

x = "<img src=\"http://www.asite.com/content/icon_clown.gif\""

results = re.search("src=(\"|\')([^\"|\']+)(\"|\')",x)

print(results.group(2))

输出:

'http://www.asite.com/content/icon_clown.gif'

编辑:

import re

x = "<img src=\"http://www.asite.com/content/icon_clown.gif\"" \
    "<img src=\'essays.gif\'" \
    "<img src=\"monty-python-(1).bmp\"" \
    "<img src=\"gchq-certified.jpg\""

results = re.findall("src=[\"|\']([^\"|\']+)[\"|\']",x)

print(results)

输出:

['http://www.asite.com/content/icon_clown.gif', 'essays.gif', 'monty-python-(1).bmp', 'gchq-certified.jpg']