提取两行之间的标题的正则表达式

问题描述 投票:0回答:1

我正在尝试提取两条虚线之间的标题

        ------------------------------------------------------------------------------------------
        PortNo    Descr                    Status         Speed     Mode        Pause     FlowCtrl
        ------------------------------------------------------------------------------------------
         1       A                           UP           200G      FULL         NO       YES

我编写这个正则表达式是为了单独获取标题

header = re.search(r'--+\n(.*)\n--+', cli_output).group(1)

我尝试使用正则表达式

--+\n(.*)

选择第 2 行和第 4 行。为了限制选取第四行,我将正则表达式修改为

--+\n(.*)\n--+

现在它不匹配任何东西。我这里哪里出错了?我也尝试过 https://regex101.com/ 但不匹配。

python regex regex-group
1个回答
0
投票

您的正则表达式要求第二行连字符从其行的 beginning 开始,但事实并非如此:这些连字符前面有空格。

因此将第二个

\n
替换为
\s+

re.search(r'--+\n(.*)\s+--+', cli_output)

请注意,您不应立即将

.group(1)
链接到
search
调用。最好先检查您是否有匹配项:

match = re.search(r'--+\n(.*)\s+--+', cli_output)
if not match:
    print("there was no match of a heading")
else:
    header = match.group(1)
    print(header)
© www.soinside.com 2019 - 2024. All rights reserved.