使用正则表达式python匹配文件中的多行

2024-05-17 00:26:18 发布

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

我有很多文件,每个文件都有一组给定模式的行。我想一次匹配这些多行,并对它们执行一些操作,如删除、移动到另一个文件等

文件中的多行如下所示。在

self.unsupported_cmds = [r'\s*clns\s+routing',

                         r'\s*bfd\s+graceful-restart',

                         r'\s*ip\s+default-network',

                         r'\s*ip\s+default-gateway',

                         r'\s*ip\s+subnet-zero',

                         r'\s*ip\s+cef\s*$' ]

方括号内的行可能不同。在

帮我怎么做。在


Tags: 文件selfipdefault模式networkroutinggateway
1条回答
网友
1楼 · 发布于 2024-05-17 00:26:18

正如pythonre模块documentation所说,您可以将MULTILINE标志添加到re.compile方法中。这将允许您一次匹配整个文件。在

import re

regex = re.match(r'''(
    ^\s*clns\s+routing$ |
    ^\s*bfd\s+graceful-restart$ |
    ^\s*ip\s+default-network$ |
    ^\s*ip\s+default-gateway$ |
    ^\s*ip\s+subnet-zero$ |
    ^\s*ip\s+cef\s*$
)+''', re.MULTILINE | re.VERBOSE)

请注意,我添加了VERBOSE标志来编写带有附加格式的正则表达式,以使正则表达式看起来更好。您还应该看到有几个^$符号。这就是多行正则表达式如何允许您在一个文件中的多行上进行匹配。在

另外,我必须警告您,这个正则表达式只会帮助匹配文件,只是为了确保整个文件的格式正确。如果你想解析这个文件中的数据,你需要稍微修改一下这个正则表达式来满足你的需要。在

第二种代码变体

^{pr2}$

相关问题 更多 >