python 在小于2.7.5版本中 re模块出现 nothing to repeat 错误
python 在小于2.7.5版本中的 re模块出现 nothing to repeat 错误在运行带正则python程序时,发生一个错误如下:
Traceback (most recent call last):
File "multi_views_statistics_9.10.py", line 80, in ?
retcode = re.match('^\+{2}\s+(.*)?\s+(?=\+{2})',line);
File "/usr/lib64/python2.4/sre.py", line 129, in match
return _compile(pattern, flags).match(string)
File "/usr/lib64/python2.4/sre.py", line 227, in _compile
raise error, v # invalid expression
sre_constants.error: nothing to repeat
想匹配的字符串是++ Incoming Queries ++
发生错误的语句:retcode = re.match('^\+{2}\s+(.*)?\s+(?=\+{2})',line);
问题定位过程中,发现可能是python的一bug,问题出在上述语句中粗体红色中,因为python模块re对“*”匹配处理异常导致语句执行失效,那么如何对"*"等价呢,这个具体要看具体的需求是什么。
例如本程序中的我需匹配表格中 ”+“ 中间的单词,那么我的作法是:.* 替换成 .*即可,所以对低版本(<2.7.5)python 模块re的处理中,"*" 可以使用以下规律匹配
*替换成 [你想匹配的正则表达式]*
综上所述,我的程序修正为:
原语句: retcode = re.match('^\+{2}\s+(.*)?\s+(?=\+{2})',line);
新语句:retcode = re.match('^\+{2}\s+(.*)?\s+(?=\+{2})',line);
希望对大家有所帮助
有价值参考资料:
http://stackoverflow.com/questions/3675144/regex-error-nothing-to-repeat
页:
[1]