Python의 대체 문자열 내 캡처 그룹
sub 메서드를 사용할 때,
정규식에서 무언가를 캡처 그룹에 저장했다면,
대체 문자열에서 백슬래시 두 개 \ 뒤에
캡처 그룹 번호를 적어 그 내용을 삽입할 수 있습니다.
예를 들어, \1 -
첫 번째 캡처 그룹, \2 - 두 번째 캡처 그룹
등입니다.
이것이 왜 필요한지 그리고 어떻게 사용하는지 예제를 통해 살펴보겠습니다.
예제
모든 숫자를 찾아서 그것들을 괄호 안에 넣은 형태로 대체해 봅시다. 이를 위해 찾은 모든 숫자를 괄호로 감싼 자신으로 대체합니다:
txt = '1 23 456 xax'
res = re.sub('(\d+)', '(\1)', txt)
print(res)
결과로 다음 문자열이 변수에 저장됩니다:
'(1) (23) (456) xax'
예제
주위에 'x'가 있는 모든 숫자 문자열을 찾아서
그 숫자들을 '!' 기호로 둘러싼 형태로
대체해 봅시다:
txt = 'x1x x23x x456x xax'
res = re.sub('x(\d+)x', '!\1!', txt)
print(res)
결과로 다음 문자열이 변수에 저장됩니다:
'!1! !23! !456! xax'
예제
다음 문제를 해결해 봅시다: 문자열
'aaa@bbb ccc@ddd'가 주어졌을 때 - 글자,
그 다음 @ 기호, 그 다음 글자입니다.
부분 문자열 'aaa@bbb'에서
'@' 기호 앞과 뒤의 글자를 바꾸어야 합니다:
txt = 'aaa@bbb ccc@ddd'
res = re.sub('([a-z]+)@([a-z]+)', '\2@\1', txt)
print(res)
결과로 다음 문자열이 변수에 저장됩니다:
'bbb@aaa ccc@ddd'
실습 문제
다음 문자열이 주어졌습니다:
txt = '12 34 56 78'
모든 두 자리 숫자에서 숫자의 순서를 뒤바꾸세요.
날짜 문자열이 주어졌습니다:
txt = '31.12.2025'
이 날짜를 '2025.12.31' 형식으로 변환하세요.