Рассмотрим следующее:
>>> import re
>>> a = "first:second"
>>> re.findall("[^:]*", a)
['first', '', 'second', '']
>>> re.sub("[^:]*", r"(\g<0>)", a)
'(first):(second)'
re.sub()
поведение имеет больше смысла, но я также понимаю поведение re.findall()
. В конце концов, вы можете сопоставить пустую строку между first
и :
, которая состоит только из символов без двоеточия (ровно нуля из них), но почему не работает re.sub()
?
Не должен ли результат последней команды быть (first)():(second)()
?