<p>你可以用</p>
<pre><code>(?ms)^1\.1\.1\.254/32\n.*?ipv4\s+via\s+(\d[\d.]*)
</code></pre>
<p>见<a href="https://regex101.com/r/66soZ0/1" rel="nofollow noreferrer">regex demo</a></p>
<p><strong>详细信息</strong></p>
<ul>
<li><code>(?ms)</code>-<code>re.M</code>和<code>re.DOTALL</code>已启用</li>
<li><code>^</code>-行的开始</li>
<li><code>1\.1\.1\.254/32</code>-<code>1.1.1.254/32</code>字符串</li>
<li><code>\n</code>-换行符</li>
<li><code>.*?</code>-任何0个或更多字符尽可能少</li>
<li><code>ipv4\s+via\s+</code>-<code>ipv4</code>,1+空格,<code>via</code>,1+空格</li>
<li><code>(\d[\d.]*)</code>-捕获组1:一个数字,然后是0个或更多数字/点</li>
</ul>
<p><a href="https://ideone.com/xFAHCt" rel="nofollow noreferrer">Python demo</a>:</p>
<pre><code>import re
text = "0.0.0.0/0\n unicast-ip4-chain\n [@0]: dpo-load-balance: [proto:ip4 index:86 buckets:1 uRPF:102 to:[0:0]]\n [0] [@0]: dpo-drop ip4\n0.0.0.0/32\n unicast-ip4-chain\n [@0]: dpo-load-balance: [proto:ip4 index:87 buckets:1 uRPF:88 to:[0:0]]\n [0] [@0]: dpo-drop ip4\n1.1.1.254/32\n unicast-ip4-chain\n [@0]: dpo-load-balance: [proto:ip4 index:72 buckets:1 uRPF:41 to:[0:0]]\n [0] [@5]: ipv4 via 2.2.2.254 VirtualFuncEthernet0/7/0.1540: mtu:1500 f8c001181ac0fa163e81a6c0810006040800\n14.1.1.0/32\n unicast-ip4-chain\n [@0]: dpo-load-balance: [proto:ip4 index:14 buckets:1 uRPF:111 to:[0:0]]\n [0] [@0]: dpo-drop ip4\n14.1.1.1/32\n unicast-ip4-chain\n [@0]: dpo-load-balance: [proto:ip4 index:54 buckets:1 uRPF:61 to:[1228:75011]]\n [0] [@5]: ipv4 via 14.1.1.1 VirtualFuncEthernet0/7/0.1540: mtu:1500 f8c001181ac0fa163e81a6c0810006040800"
v = "1.1.1.254/32"
m = re.search(rf"^{re.escape(v)}\n.*?ipv4\s+via\s+(\d[\d.]*)", text, re.M|re.DOTALL)
if m:
print(m.group(1))
# => 2.2.2.254
</code></pre>