尝试解析Linux版本

时间:2013-03-04 02:50:19

标签: regex python-2.7 python-2.6

我正在尝试使用以下正则表达式解析linux版本

^Linux version ([0-9a-z.-]*) \([^@]*@[^)]*).*

这是结果

追溯(最近的呼叫最后):
  模块中的文件“”,第1行   文件“/usr/lib/python2.6/re.py”,第190行,在编译中     return _compile(pattern,flags)
  文件“/usr/lib/python2.6/re.py”,第245行,在_compile中     提出错误,v#无效表达
sre_constants.error:不平衡的括号

如何解决这个问题?我的正则表达式有问题吗?感谢

1 个答案:

答案 0 :(得分:1)

^Linux version ([0-9a-z\.\-]*) ([^@]*@[^)]*).*

你没有逃脱第一组方括号中的破折号。破折号有一个特殊值(它表示一组值,也就是0到9,A到Z.因此它必须被转义。

你还逃脱了一个圆圈括号“(”我认为你不是故意的,因为这会导致不平衡的括号。如果你确实想要,也逃脱第二个括号(见下文)。

替代:

^Linux version ([0-9a-z\.\-]*) \([^@]*@[^)]*\).*