我想要输出的版本号,对于这两个输出,我只想要一个代码
版本:从Cisco读取输出,直到Version,然后提取Version Number
例如:读取此行,例如Cisco IOS软件,s2t54软件(s2t54-ADVIPSERVICESK9-M),版本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
答案 0 :(得分:1)
我认为这是您要寻找的表达方式:
Version\s*(.+?)[\s|,]
它匹配“版本”之后的所有内容,直到找到逗号或空格
答案 1 :(得分:1)
尝试Version\s+([^,\s]+).+
说明:
Version
-实际匹配Version
\s+
-匹配一个或多个空格
([^,\s]+)
-匹配空格\s
或逗号,
中的一个或多个其他字符,并将其存储在第一个捕获组中
.+
-匹配任何一个或多个字符(换行符除外),这将消耗其余的输出并防止在一个输出中匹配多个版本