我正在尝试使用以下正则表达式解析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:不平衡的括号
如何解决这个问题?我的正则表达式有问题吗?感谢
答案 0 :(得分:1)
^Linux version ([0-9a-z\.\-]*) ([^@]*@[^)]*).*
你没有逃脱第一组方括号中的破折号。破折号有一个特殊值(它表示一组值,也就是0到9,A到Z.因此它必须被转义。
你还逃脱了一个圆圈括号“(”我认为你不是故意的,因为这会导致不平衡的括号。如果你确实想要,也逃脱第二个括号(见下文)。
替代:
^Linux version ([0-9a-z\.\-]*) \([^@]*@[^)]*\).*