#!/usr/bin/env python
import re
print re.sub(r'a+(\d)?', r'\1', "aaaa3")
print re.sub(r'a+(\d)?', r'\1', "aaaa") # error!
Второе print
заявление дает мне ошибку:
3
Traceback (most recent call last):
File "./bbb.py", line 5, in <module>
print re.sub(r'a+(\d)?', r'\1', "aaaa")
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py", line 155, in sub
return _compile(pattern, flags).sub(repl, string, count)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py", line 291, in filter
return sre_parse.expand_template(template, match)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/sre_parse.py", line 831, in expand_template
raise error, "unmatched group"
sre_constants.error: unmatched group
Как я могу справиться с этой переменной захвата с вероятным квантором 0
без ошибок?
Примечание(\d)?
здесь может быть еще сложнее регулярное выражение, а не просто легко, как \d
, вот почему я взять с собой квантор ?
из вне (..)
.
Переместите '?' Внутри группы захвата. –
В Python вы не можете выполнить обратную ссылку (неудачные) группы захвата. Но вы можете в JavaScript :) –
Я пробую этот простой код на https://regex101.com/#python, это работа, но на моем терминале это не работает, тогда я немного смущен. В любом случае, спасибо за ваши ответы. – fronthem