Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 정규식에서 반복 문자 클래스(Repeating Character Class)란 무엇일까?

반복 문자 클래스란?

정규식에서 문자 클래스(character class) 뒤에 ?, *, + 같은 반복 연산자가 붙은 형태를 반복 문자 클래스(repeating character class)라고 부릅니다.

문자 클래스 전체가 반복된다

?, *, + 연산자로 문자 클래스를 반복하면, 매칭된 단 하나의 문자가 아니라 문자 클래스 전체가 반복됩니다.

예를 들어 정규식 [0-9]+는 '333'뿐만 아니라 '579'처럼 서로 다른 숫자들도 모두 매칭할 수 있습니다. 즉, 0부터 9 사이의 어떤 숫자든 여러 번 나오기만 하면 일치하는 것입니다.

역참조(Backreference)로 매칭된 문자 반복하기

문자 클래스 자체가 아니라 실제로 매칭된 그 문자를 반복하고 싶다면 역참조(backreference)를 사용해야 합니다.

정규식 ([0-9])\1+은 '333'은 매칭하지만 '579'는 매칭하지 않습니다. 첫 번째 그룹에서 캡처한 숫자와 동일한 숫자가 반복되어야 하기 때문입니다.

이 정규식을 문자열 "922226"에 적용하면 문자열 중간에 있는 '2222' 부분이 매칭됩니다.

전방·후방 탐색(Lookahead & Lookbehind)

만약 이런 방식의 매칭이 원하는 결과가 아니라면, 전방 탐색(lookahead)후방 탐색(lookbehind)을 함께 활용하여 매칭 조건을 더 정교하게 제어할 수 있습니다.