Python正则表达式模式匹配数字和括号?

时间:2019-01-04 08:14:42

标签: python python-3.x python-2.7

我想知道如何获取/匹配以括号括起来的数字列表结尾的digist列表?

原始文本

Cisco IOS软件,3600软件(C3660-JK9S2-M),版本12.4(25b)强文本,发行软件(fc1) ROM:3600软件(C3660-JK9S2-M),版本12.4(25b),发布软件(fc1)

预期的比赛

12.4(25b)

下面是我尝试过的方法,但是它不起作用或无法获得特定版本

^\d.*\)$ 
^[0-9].*\)$
Version\s\d.*\)
Version \d{2}.*\)$

有什么主意吗?

谢谢

2 个答案:

答案 0 :(得分:0)

可以正常工作: \d+\.\d+\(\d+.\) 结果: enter image description here

任何问题请发表评论。

答案 1 :(得分:0)

尝试以下操作:.*Version (.*?\)).*。无论括号中的数字后面是否有字母,此表达式都应起作用。然后,您可以使用\1作为“变量”来获取结果(版本号部分)。在python中,您可以从结果中使用group()函数。事先检查是否完全匹配安全性。

完整的示例代码:

import re

show = 'Cisco IOS Software, 3600 Software (C3660-JK9S2-M), Version 12.4(25b)strong text, RELEASE SOFTWARE (fc1) ROM: 3600 Software (C3660-JK9S2-M), Version 12.4(25b), RELEASE SOFTWARE (fc1)'
regexoutput = re.search('.*Version (.*?\)).*', show)

if regexoutput:
    print(regexoutput.group(1))

要获取多个版本号(即'Version'字符串后的两个版本号,可以使用regexoutput = re.findall('Version (.*?\))',show)。此处,将返回一个列表,并且该组将根据定义自动获取(请参见{{ 3}}),因此不需要最后检查。