在python中使用findall获取所有出现的内容

时间:2015-12-28 21:45:45

标签: python regex findall

我需要得到" relay.albacom.net"和" smtp.albacom.net"

import re

string="""<tr bgcolor="#d3ebf8"><td>Albacom</td><td>relay.albacom.net</td><td></td></tr><tr bgcolor="#d3ebf8"><td>Albacom</td><td>smtp.albacom.net</td><td></td></tr>"""

test=re.findall(r'<tr bgcolor="#d3ebf8"><td>.*</td><td>(.*)</td><td>.*</td></tr>', string)

print test

但是,我只获得['smtp.albacom.net']

以下.*表示任何字符对吗?所以它应该有用......

Thx!

2 个答案:

答案 0 :(得分:4)

使用非贪婪选择器:

<tr bgcolor="#d3ebf8"><td>.*?</td><td>(.*?)</td><td>.*?</td></tr>

当你使用.*而不使用?正则表达式时,尝试尽可能多地捕获此表达式的字符。但是添加?,强制它尽可能少地选择。

Check this sample

答案 1 :(得分:0)

test = re.findall('[a-z]+\.albacom\.[a-z]+',string)

我相信这应该允许您以更通用的方式在字符串中找到 .albacom。形式的项目。