<p>你可以按以下步骤做:</p>
<pre><code>import regex as re
string = """
(1.1.1.1/32, 3.3.3.5/32), abcd: xx:xx:xx, abv cd
value: eth1/1 , bbcc , time: tt:tt
text :
eth1/1 ip time <<
eth1/2 ip time <<
(1.1.1.1/32, 3.3.4.5/32), abcd: xx:xx:xx, abv cd
value: eth1/1 , bbcc , time: tt:tt
text :
eth1/1 ip time <<
eth1/2 ip time <<
(1.1.1.1/32, 3.3.5.5/32), abcd: xx:xx:xx, abv cd
value: eth1/1 , bbcc , time: tt:tt
text :
eth1/1 ip time <<
eth1/2 ip time <<
"""
rx = re.compile(r'''
(?:
\G(?!\A)
|
(?P<ip>\d+\.\d+\.\d+\.\d+)/32\)
)
(?s:
(?:(?!^\().)*?
)
^
(?P<interface>eth\S+)
\K
''', re.VERBOSE|re.MULTILINE)
result = {}; ip = None;
for match in rx.finditer(string):
if match.group('ip'):
ip = match.group('ip')
try:
result[ip].append(match.group('interface'))
except:
result[ip] = [match.group('interface')]
print(result)
# {'3.3.4.5': ['eth1/1', 'eth1/2'], '3.3.3.5': ['eth1/1', 'eth1/2'], '3.3.5.5': ['eth1/1', 'eth1/2']}
</code></pre>
<p>这将采用上面的结构(括号中的IP地址)并使用找到的第二个地址。<br/>
见<a href="https://regex101.com/r/OdoRqR/1" rel="nofollow noreferrer"><strong>a demo on regex101.com</strong></a>。你知道吗</p>