我正在尝试提取两条虚线之间的标题
------------------------------------------------------------------------------------------
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/ 但不匹配。
您的正则表达式要求第二行连字符从其行的 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)