正则表达式Python,标记字符串的开头和结尾?

时间:2014-09-11 02:19:02

标签: python regex string

所以我今天刚刚开始使用python进行正则表达式,我似乎无法让它工作。

所以我有字符串

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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