문자 클래스(Character Class)
문자 클래스(character class) 또는 문자 집합(character set)은 대괄호([]) 안에 여러 문자를 나열해 묶어 놓은 것을 말합니다. 정규식 엔진은 문자 클래스에 포함된 여러 문자 중 단 하나와만 일치(match)시킵니다. 즉, 매칭하고 싶은 문자들을 대괄호 사이에 넣으면 되는데, 예를 들어 주어진 텍스트에서 임의의 모음과 일치시키고 싶다면 문자 집합 [aeiou]를 사용하면 됩니다.
여기서 중요한 점은 문자 클래스가 한 번에 단 하나의 문자와만 일치한다는 것입니다. 또한 문자 클래스 안에서 문자들을 나열하는 순서는 결과에 아무런 영향을 주지 않으므로, 어떤 순서로 작성하더라도 동일한 결과를 얻게 됩니다.
문자 클래스 안에서 하이픈(-)을 사용하면 문자의 범위(range)를 지정할 수 있습니다. 예를 들어 [0-9]는 0부터 9 사이의 숫자 하나와 일치하며, 영문 대소문자 전체를 포괄하려면 [A-Za-z] 문자 클래스를 사용하면 됩니다.
참고로 문자 클래스 시작 부분에 캐럿(^)을 붙이면 부정(negation)의 의미가 됩니다. 예를 들어 [^aeiou]는 모음이 아닌 문자 하나와 일치합니다.
예제
다음 코드는 주어진 문자열에서 모든 모음을 찾아 출력합니다.
import re
s = 'mother of all battles'
result = re.findall(r'[aeiou]', s)
print(result)
출력
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
['o', 'e', 'o', 'a', 'a', 'e']