无效的表达sre_constants.error:没有什么可重复的

时间:2018-02-17 04:01:15

标签: python regex

我正在尝试匹配输出变量中的数据,我希望匹配*之后的单词,我尝试以下方式但遇到错误,如何修复它?

import re
output = """test
          * Peace
            master"""
m = re.search('* (\w+)', output)
print m.group(0)

错误: -

Traceback (most recent call last):
  File "testinglogic.py", line 7, in <module>
    m = re.search('* (\w+)', output)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py", line 146, in search
    return _compile(pattern, flags).search(string)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py", line 251, in _compile
    raise error, v # invalid expression
sre_constants.error: nothing to repeat

1 个答案:

答案 0 :(得分:3)

第一个修复是逃避*,因为你希望引擎将字面上(作为星号)对待它,所以你用反斜杠来逃避它。

另一个建议是使用lookbehind,因此您不需要使用其他捕获组:

>>> re.search('(?<=\*\s)\w+', output).group()
'Peace'