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

Python 정규 표현식의 부정 문자 클래스(Negated Character Class) 완벽 가이드

파이썬 정규 표현식의 부정 문자 클래스란?

파이썬 정규 표현식을 다루다 보면 부정 문자 클래스(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']

이처럼 부정 문자 클래스를 활용하면 특정 문자나 문자 범위를 손쉽게 제외한 매칭을 수행할 수 있어, 데이터 클렌징이나 입력값 검증 등 다양한 상황에서 유용하게 사용됩니다.