我有一个文本文件,其中包含如下条目:

 Interface01 :
     adress
        192.168.0.1
next-interface:
 interface02:
     adress
        10.123.123.214
next-interface:
 interface01 :
     adress
        172.123.456.123

我想解析它,只得到对应于Interface01的IP地址
我尝试了pythonre.finall的may功能,但是没有找到匹配的
 i = open(f, r, encoding='UTF-8')
 txt = i.read()
 interface = re.findall(r'Interface01 :\s*(.adress*)n',txt,re.DOTALL)

但没什么用。
预期结果是192.168.0.1

最佳答案

你可以用

Interface01\s*:\s*adress\s+(.*)

请参见regex demo。在Python中,使用re.search获得第一个匹配,因为您只想提取1个IP地址。
图案细节:
Interface01-文本子字符串
\s*:\s*-a:用0+空格括起来
adress-文本子字符串
\s+-1+空格
(.*)-组1:除换行符之外的任何0+字符。
Python demo
import re
reg = r"Interface01\s*:\s*adress\s+(.*)"

with open('filename') as f:
    m = re.search(reg, f.read())
    if m:
        print(m.group(1))

# => 192.168.0.1

07-24 18:52