파이썬에서 문자열이 허용된 특정 문자들로만 구성되어 있는지 확인하려면 집합(Set)을 활용하는 방법이 가장 간단합니다. 먼저 허용할 문자들로 집합을 선언한 뒤, 검사하려는 문자열의 집합이 그 하위 집합인지 확인하면 됩니다.
예를 들어, 문자열이 오직 1, 2, 3, 4만 포함하는지 검사하는 코드는 다음과 같습니다.
예제 1: 집합(Set) 사용하기
allowed_chars = set('1234')
validation_string = '121'
if set(validation_string).issubset(allowed_chars):
print(True)
else:
print(False)출력 결과
True
'121'은 모두 1과 2로만 이루어져 있으므로 허용된 문자 집합의 부분집합에 해당해 True가 출력됩니다. 만약 문자열에 허용되지 않은 문자가 하나라도 포함되어 있다면 False가 반환됩니다.
예제 2: 정규표현식(Regex) 사용하기
같은 결과를 정규표현식으로도 얻을 수 있습니다. 숫자 1, 2, 3, 4만 매칭하려면 re.match() 함수에 정규식 패턴 "^[1234]+$"를 사용합니다.
import re
print(bool(re.match('^[1234]+$', '123abc')))
print(bool(re.match('^[1234]+$', '123')))출력 결과
False True
주의사항
정규표현식에는 몇 가지 유의할 점이 있습니다.
1. 특수 문자 이스케이프: 점(.), 별표(*), 괄호 등 일부 문자는 정규식에서 특별한 의미를 가지므로, 리터럴 문자로 매칭하려면 백슬래시(\)로 이스케이프 처리해야 합니다.
2. bool() 변환 필요: re.match()는 매칭 성공 시 match 객체를, 실패 시 None을 반환합니다. 따라서 단순히 참/거짓 여부만 확인하려면 위 예제처럼 bool()로 감싸 명시적으로 불리언 값으로 변환하는 것이 좋습니다.
두 방법 중 어떤 것을 선택할지는 상황에 따라 다릅니다. 허용 문자가 고정적이고 간단하다면 집합 방식이 더 직관적이고 빠르며, 패턴이 복잡하거나 범위 기반 조건(예: 영문자와 숫자만 허용)이 필요하다면 정규표현식이 더 유연하게 대응할 수 있습니다.