【问题标题】:Extract the Version number from the output using regex python?使用正则表达式 python 从输出中提取版本号?
【发布时间】:2019-11-05 07:22:57
【问题描述】:

我想要输出中的版本号,对于两个输出我只想要一个代码

版本:读取以 Cisco 开头的输出,直到版本,然后提取版本号

例如:读这样一行 Cisco IOS Software, s2t54 Software (s2t54-ADVIPSERVICESK9-M), Version 15.5(1)SY2, 输出版本

输出:15.5(1)SY2

输出 1: ''' Cisco IOS 软件,s2t54 软件 (s2t54-ADVIPSERVICESK9-M),版本 15.5(1)SY2,发布软件 (fc6) ROM:系统引导程序,版本 12.2(50r)SYS3,发布软件 (fc1) CPU:MPC8572_E,版本:2.2,(0x80E80022) 核心:E500,版本:3.0,(0x80210030) '''

输出 2: Cisco IOS 软件、IOS-XE 软件、Catalyst 4500 L3 交换机软件 (cat4500es8-UNIVERSALK9-M),版本 03.08.07.E 发布软件 (fc2) 根据 GNU 通用公共许可证(“GPL”)2.0 版获得许可。这 GPL 2.0 版许可的软件代码是免费软件 GPL 2.0 条款下的 GPL 代码。

我试过这个代码:

r = re.findall(r'Version\s*(([\w]+))', str)
r[0]

它给出输出:

15.5

03.08.07.E

预期输出:

15.5(1)SY2

03.08.07.E

【问题讨论】:

    标签: python regex


    【解决方案1】:

    试试Version\s+([^,\s]+).+

    解释:

    Version - 匹配 Version 字面意思

    \s+ - 匹配一个或多个空格

    ([^,\s]+) - 匹配空格\s或逗号,中的一个或多个字符并将其存储在第一个捕获组中

    .+ - 匹配一个或多个任意字符(换行符除外),这是为了消耗剩余的输出并防止在一个输出中匹配多个版本

    Demo

    【讨论】:

      【解决方案2】:

      我认为这是您正在寻找的表达方式:

      Version\s*(.+?)[\s|,]
      

      匹配“版本”之后的任何内容,直到找到逗号或空格

      【讨论】:

        【解决方案3】:

        我认为最好的是;

        a = r'版本\s*(.+?)[\s|,|[]'

        示例输出:

        6.4.2

        03.06.06E

        03.16.07b.S

        12.0(18b)

        12.2(33.3.8)SB13

        12.2(33)SXI2a

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-10-28
          相关资源
          最近更新 更多