[파이썬] 정규 표현식의 문자 범위 반복
정규 표현식(Regular Expressions)은 문자열 패턴을 검색하고 조작하기 위한 매우 강력한 도구입니다. 문자열을 처리하고 분석하는 작업을 수행할 때 자주 사용됩니다. 이 중에서도 정규 표현식의 문자 범위 반복은 특히 유용한 기능입니다. 문자 범위 반복을 사용하면 특정 범위 내의 문자들이 반복되는 패턴을 매칭할 수 있습니다.
문자 범위 (Character Range)
정규 표현식에서 문자 범위는 대괄호([]) 안에 시작과 끝을 정의하여 나타냅니다. 예를 들어, [a-z]
는 소문자 알파벳 a부터 z까지를 나타냅니다. 알파벳 외의 문자, 숫자, 공백 등도 범위로 지정할 수 있습니다. 예를 들어, [0-9]
는 모든 숫자를, [A-Za-z]
는 모든 알파벳을 의미합니다.
문자 범위 반복 (Repeating Character Ranges)
문자 범위 반복은 문자 범위가 하나 이상 반복되는 패턴을 매칭하는 정규 표현식입니다. 문자 범위 반복은 중괄호({}) 안에 반복 횟수를 지정하여 사용합니다. 예를 들어, [0-9]{3}
은 세 자리 숫자를 의미하며, [A-Za-z]{2,4}
는 두 자리에서 네 자리 알파벳을 의미합니다.
import re
text = "123 45678 abC 12345 XYZ"
pattern = "[0-9]{3}" # 세 자리 숫자 매칭하기
matches = re.findall(pattern, text)
print(matches)
# 출력: ['123', '123', '456']
pattern = "[A-Za-z]{2,4}" # 두 자리에서 네 자리 알파벳 매칭하기
matches = re.findall(pattern, text)
print(matches)
# 출력: ['abC', 'XYZ']
주의사항
- 자주 사용되는 문자 범위 반복 패턴은 다음과 같습니다:
[a-zA-Z0-9]
: 알파벳과 숫자를 포함하는 문자[가-힣]
: 한글 문자[A-Za-z]{2}
: 두 자리 알파벳[0-9]{1,3}
: 1자리에서 3자리 숫자
- 문자 범위 반복에는 greedy와 non-greedy의 두 가지 방식이 있습니다. 간단히 말하면 greedy한 방식은 가능한 한 많은 문자를 매칭하고, non-greedy한 방식은 가능한 한 적은 문자를 매칭하는 것을 의미합니다. 예를 들어,
.*
은 greedy하게 동작하여 가능한 한 많은 문자열을 매칭시킵니다. 반면,.*?
는 non-greedy하게 동작하여 가능한 한 적은 문자열을 매칭시킵니다.
정규 표현식의 문자 범위 반복은 파이썬과 다른 프로그래밍 언어에서 지원되는 매우 유용한 기능입니다. 이를 잘 활용하여 문자열 패턴을 검색하고 조작하는 일에 도움이 될 것입니다. 규모가 크고 복잡한 프로젝트에서는 정규 표현식을 사용하여 데이터 검색 및 변환 과정을 자동화하는 것이 매우 효율적입니다.