我需要得到" 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!
答案 0 :(得分:4)
使用非贪婪选择器:
<tr bgcolor="#d3ebf8"><td>.*?</td><td>(.*?)</td><td>.*?</td></tr>
当你使用.*
而不使用?
正则表达式时,尝试尽可能多地捕获此表达式的字符。但是添加?
,强制它尽可能少地选择。
答案 1 :(得分:0)
test = re.findall('[a-z]+\.albacom\.[a-z]+',string)
我相信这应该允许您以更通用的方式在字符串中找到 .albacom。形式的项目。