擅长:python、mysql、java
<p>至少通过您的示例,您可以做到:</p>
<pre><code>>>> re.split(r'(?<=DOWN\r\n\r\n)(?=FortyGigE)', text)
['FortyGigE1/0/53\r\nCurrent state: DOWN\r\nLine protocol state: DOWN\r\n\r\n',
'FortyGigE1/0/54\r\nCurrent state: DOWN\r\nLine protocol state: DOWN\r\n\r\n']
</code></pre>
<p>与您所述的期望输出相比:</p>
<pre><code>>>> output==re.split(r'(?<=DOWN\r\n\r\n)(?=FortyGigE)', text)
True
</code></pre>
<p>它的工作原理是使用零宽度的回望<code>(?<=DOWN\r\n\r\n)</code>和零宽度的前视<code>(?=FortyGigE)</code>作为分割点</p>
<p><a href="https://regex101.com/r/ZiaU5n/1/" rel="nofollow noreferrer">Here is a regex101 demo</a>;由于该平台不支持<code>\r</code>,因此<code>\r</code>将被删除</p>