[python] 파이썬 re.sub 그룹 : \ number 이후의 숫자

로 바꾸려면 어떻게 foobar해야 foo123bar합니까?

작동하지 않습니다.

>>> re.sub(r'(foo)', r'\1123', 'foobar')
'J3bar'

이것은 작동합니다 :

>>> re.sub(r'(foo)', r'\1hi', 'foobar')
'foohibar'

과 같은 것을 가질 때 일반적인 문제라고 생각합니다 \number. 누구든지 이것을 처리하는 방법에 대한 힌트를 줄 수 있습니까?



답변

정답은:

re.sub(r'(foo)', r'\g<1>123', 'foobar')

문서에서 관련 발췌 :

위에서 설명한대로 문자 이스케이프 및 역 참조 외에도 \ g는 (? P …) 구문에 정의 된대로 name이라는 그룹과 일치하는 하위 문자열을 사용합니다. \ g는 해당 그룹 번호를 사용합니다. 따라서 \ g <2>는 \ 2와 동일하지만 \ g <2> 0과 같은 대체물에서는 모호하지 않습니다. \ 20은 그룹 2에 대한 참조가 아니라 리터럴 문자 ‘0’이 아닌 그룹 20에 대한 참조로 해석됩니다. 역 참조 \ g <0>은 RE와 일치하는 전체 하위 문자열을 대체합니다.


답변