You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

正则表达式提取两行虚线间表头失败问题排查

正则匹配失败的原因及解决方法

问题根源

你的正则匹配失败核心有两个问题:

  1. 没匹配分隔线前的空白字符:原文本里每一行开头都有大量空格,你写的--+直接匹配短横线开头的行,但实际分隔线带前置空格,正则找不到对应模式。
  2. 换行处理不明确:你在正则里直接换行书写,但原始字符串中的换行需要用\n明确匹配,且只有先匹配到正确的分隔线,后续的表头捕获才会生效。

修正后的正则及代码

调整正则,覆盖分隔线前后的空白字符,明确处理换行:

import re

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

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

输出结果:

PortNo    Descr                    Status         Speed     Mode        Pause     FlowCtrl

正则解释

  • \s*:匹配分隔线开头的任意空白字符(空格、制表符都能覆盖)
  • --+:匹配至少一个短横线组成的分隔线
  • \n:明确匹配换行符,对应文本中的行分隔
  • (.*?):非贪婪捕获表头行内容,避免意外匹配多余字符
  • .strip():去掉表头行前后的冗余空格,得到整洁的表头文本

内容的提问来源于stack exchange,提问作者Vijay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 20:59:58