2014-09-11 90 views
0

所以我刚开始进入Python的正则表达式,我似乎无法得到这个工作。正则表达式Python,标记字符串的开始和结束?

所以我有串

"2800 Software (C2800NM-ADVIPSERVICESK9-M), Version 12.4(24)T8, RELEASE SOFTWARE (fc1)" 

这是一个从一台思科路由器的一些输出,我需要拉动的版本号。版本号是“Version”之后的字符串,并以“,”结尾。我可以编写一个正则表达式,每次都会根据之前出现的“版本”和“,”之后提取版本号吗?我只需要“12.4(24)T8”拉和其他路由器有不同的数字是完全不同的。

回答

0
Version\s*(\S+?), 

试试这个。使用match.group(1)得到你的结果。

或者你可以使用它。

print re.findall(r"Version\s*(\S+?),",x) 

或者您可以使用它。

print re.search(r"Version\s*(\S+?),",x).group(1) 

查看演示。

http://regex101.com/r/bA0jG5/10

2

如果你试图从这个单一字符串的版本,你可以使用re.search()做到这一点。

>>> import re 
>>> s = '2800 Software (C2800NM-ADVIPSERVICESK9-M), Version 12.4(24)T8, RELEASE SOFTWARE (fc1)' 
>>> re.search(r'\bVersion\s*([^,]+)', s).group(1) 
'12.4(24)T8' 

如果你有,你需要从中提取多个字符串,用re.findall()

>>> re.findall(r'\bVersion\s*([^,]+)', s) 
['12.4(24)T8'] 

说明:

\b   # the boundary between a word character (\w) and not a word character 
Version # 'Version' 
\s*  # whitespace (\n, \r, \t, \f, and " ") (0 or more times) 
(   # group and capture to \1: 
    [^,]+ # any character except: ',' (1 or more times) 
)   # end of \1 
相关问题