python中用于匹配特定模式的多行的正则表达式

2024-10-02 20:31:13 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我正在尝试构建一个多行正则表达式来分组一行,后跟至少一个空格的行。例如

interface Ethernet 1/1

      ip address <>
      mtu <>

ip tcp path-mtu-discovery

router bgp 100

     network 1.1.1.0

如何构建一个正则表达式,将“interface ethertnet 1/1”及其子图分组到一个组中,并将“ip tcp路径mtu发现”分组到另一个组中 和bgp及其子命令组成另一个组。换句话说,以非空白字符开头的行应该与以空格开头的行(如果后跟)分组。以非空白字符开头的两行应该是两个不同的组。在

我试过一些已经讨论过的正则表达式,但是没有用。在

提前谢谢


Tags: pathipaddressnetwork字符空白interfacediscovery
1条回答
网友
1楼 · 发布于 2024-10-02 20:31:13
>>> lines = '''interface Ethernet 1/1
...
...       ip address <>
...       mtu <>
...
... ip tcp path-mtu-discovery
...
... router bgp 100
...
...      network 1.1.1.0
... '''
>>> for x in re.findall(r'^\S.*(?:\n(?:[ \t].*|$))*', lines, flags=re.MULTILINE):
...     print(repr(x))
...
'interface Ethernet 1/1\n\n      ip address <>\n      mtu <>\n'
'ip tcp path-mtu-discovery\n'
'router bgp 100\n\n     network 1.1.1.0\n'
  • ^\S.+:匹配以非空格字符开头的行。在
  • \n[ \t].*:匹配以空格字符开头的行。在
  • \n$:匹配空行
  • \n(?:[ \t].*|$):匹配以空格或(|)开头的空行

使用^{}

^{pr2}$

印刷品:

['interface Ethernet 1/1', '', '      ip address <>', '      mtu <>', '']
['ip tcp path-mtu-discovery', '']
['router bgp 100', '', '     network 1.1.1.0']

相关问题 更多 >