在 python 中使用 findall 获取所有事件
get all occurence with findall in python
我需要得到 "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']
。
下面的.*
是指任意一个字符吧?所以它应该可以工作...
谢谢!
使用Non-greedyselect或:
<tr bgcolor="#d3ebf8"><td>.*?</td><td>(.*?)</td><td>.*?</td></tr>
当您使用 .*
而没有 ?
正则表达式时,请尝试为该表达式捕获尽可能多的字符。但添加一个 ?
,尽可能少地强制它 select。
test = re.findall('[a-z]+\.albacom\.[a-z]+',string)
我相信这应该允许您以更通用的方式在字符串中找到形式为 .albacom. 的项目。
我需要得到 "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']
。
下面的.*
是指任意一个字符吧?所以它应该可以工作...
谢谢!
使用Non-greedyselect或:
<tr bgcolor="#d3ebf8"><td>.*?</td><td>(.*?)</td><td>.*?</td></tr>
当您使用 .*
而没有 ?
正则表达式时,请尝试为该表达式捕获尽可能多的字符。但添加一个 ?
,尽可能少地强制它 select。
test = re.findall('[a-z]+\.albacom\.[a-z]+',string)
我相信这应该允许您以更通用的方式在字符串中找到形式为 .albacom. 的项目。