파이썬 정규 표현식의 부정 문자 클래스란?
파이썬 정규 표현식을 다루다 보면 부정 문자 클래스(negated character class)를 자주 접하게 됩니다. 부정 문자 클래스는 특정 문자들을 제외한 나머지 모든 문자와 매칭할 수 있게 해주는 강력하고 유용한 기능입니다.
문자 클래스(Character Class)의 기본 개념
먼저 일반적인 문자 클래스부터 살펴보겠습니다. 정규 표현식 [abdfgh]는 'a', 'b', 'd', 'f', 'g', 'h' 중 하나에 해당하는 단일 문자와 일치합니다. 이처럼 대괄호 안에 여러 문자를 나열한 패턴을 문자 클래스라고 부릅니다.
부정 문자 클래스의 동작 원리
반면 정규 표현식 [^abdfgh]는 위에 나열된 문자들에 포함되지 않는 단일 문자와 일치합니다. 이것이 바로 부정 문자 클래스이며, 문자 클래스의 시작 부분에 캐럿(^) 기호를 붙여 표시합니다.
즉, [^abdfgh]는 'a', 'b', 'd', 'f', 'g', 'h'를 제외한 어떤 문자 하나와도 매칭됩니다.
캐럿(^) 기호의 특별한 의미
^ 기호는 문자 클래스의 맨 앞에 위치할 때만 '부정'이라는 특별한 의미를 가집니다. 만약 문자 클래스 내의 다른 위치에서 사용되면, 예를 들어 [a^b]처럼 작성했을 때는 단순히 리터럴 '^' 문자 그 자체를 의미하게 됩니다.
숫자 범위와 함께 활용하기
부정 문자 클래스는 범위 지정 문자 클래스와도 함께 사용할 수 있습니다:
[0-9]: 한 자리 숫자와 일치[^0-9]: 숫자가 아닌 임의의 단일 문자와 일치
실제 파이썬 코드에서는 다음과 같이 활용할 수 있습니다:
import re
result = re.findall(r'[^0-9]', 'abc123def')
print(result) # ['a', 'b', 'c', 'd', 'e', 'f']이처럼 부정 문자 클래스를 활용하면 특정 문자나 문자 범위를 손쉽게 제외한 매칭을 수행할 수 있어, 데이터 클렌징이나 입력값 검증 등 다양한 상황에서 유용하게 사용됩니다.