sre_constants.error:无效的组引用Python正则表达式

时间:2015-03-30 09:55:51

标签: python regex

我写了一个python正则表达式。

import re
nt = re.sub('NT:\s*[^,)]*',r'\1', message)

消息包含数据。  (NT:167 ms,ST:2509 ms,XT:1325 ms)

如果我在数据上运行正则表达式以提取167 ms,我会收到以下错误。

File "test.py", line 79, in <module>
    nt = re.sub('NT:\s*[^,)]*',r'\1', message)
  File "/usr/lib64/python2.7/re.py", line 151, in sub
    return _compile(pattern, flags).sub(repl, string, count)
  File "/usr/lib64/python2.7/re.py", line 275, in filter
    return sre_parse.expand_template(template, match)
  File "/usr/lib64/python2.7/sre_parse.py", line 802, in expand_template
    raise error, "invalid group reference"
sre_constants.error: invalid group reference

我的代码出了什么问题?

1 个答案:

答案 0 :(得分:1)

\1 matches the same text as most recently matched by the 1st capturing group

import re
nt = re.sub('\(NT:\s*([^,)]*),.*$',r'\1', message)

                     ^^    ^^

试试这个。你还没有capturing group referencing \1这就是group ()。这就是为什么错误。在{{1}中输出你想要的那个}然后backreference it。见演示。

https://regex101.com/r/sJ9gM7/21#python

如果您希望nt167 ms,则必须匹配整个字符串然后替换。否则您可以使用

nt=re.findall(r"NT:\s*([^,)]*)",string)[0]