以下字符串
text = 'FortyGigE1/0/53\r\nCurrent state: DOWN\r\nLine protocol state: DOWN\r\n\r\nFortyGigE1/0/54\r\nCurrent state: DOWN\r\nLine protocol state: DOWN\r\n\r\n'
应分为以下几部分:
output = [
'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'
]
拆分后不应删除分隔符
delimiters = '(GigabitEthernet\d*/\d*/\d*\s.*|FortyGigE\d*/\d*/\d*\s.*)'
我试着这样做:
output = re.split(delimiters, 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']
你的建议给了我解决问题的办法。下面是我的脚本摘录:
至少通过您的示例,您可以做到:
与您所述的期望输出相比:
它的工作原理是使用零宽度的回望
(?<=DOWN\r\n\r\n)
和零宽度的前视(?=FortyGigE)
作为分割点Here is a regex101 demo;由于该平台不支持
\r
,因此\r
将被删除相关问题 更多 >
编程相关推荐