0

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

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

这是结果

Traceback(最近一次调用最后):
文件“”,第 1 行,模块
文件“/usr/lib/python2.6/re.py”,第 190 行,编译
返回 _compile(pattern, flags)
文件“/usr/lib/python2.6/re.py”,第 245 行,在 _compile 中
引发错误,v # invalid expression
sre_constants.error: unbalanced parenthesis

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

4

1 回答 1

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

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

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

选择:

^Linux version ([0-9a-z\.\-]*) \([^@]*@[^)]*\).*
于 2013-03-04T02:54:06.167 回答