stri = " the output of open(myfilename,'r').read() "
import re
pattern = r"^!\n vserver \S+\n[^!]+^!"
re.findall(pattern,stri,flags=re.M)
正则表达式:
^!\n -> match a solitary '!' on its own line followed by newline
vserver \S+\n -> starting with vserver \S+\n
[^!]+ -> match the rest of the block, up to..
^! -> another solitary '!' on its own line.
from itertools import groupby
with open("data.txt") as infile:
for block in (j for i,j in groupby(t,'!'.__ne__) if i):
block = list(block)
if not block[0].startswith("vserver "):
continue
...
您需要告诉Python您正在使用multi-line正则表达式,并且dot characters can match new-lines:
如果要获取vserver的名称:
试试看
正则表达式:
根据您想要提取的特定信息,regex可以被细化。你知道吗
例如,要提取
vserver
之后的文本,我可以添加括号:然后:
这样做的好处是不必一次读取整个文件
相关问题 更多 >
编程相关推荐