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

파이썬 정규식으로 문자열이 영숫자인지 확인하는 방법

정규식을 활용한 영숫자 검사

파이썬에서 re 모듈(정규 표현식)을 사용하면 문자열이 오직 영문자와 숫자(영숫자)로만 구성되어 있는지 간단하게 확인할 수 있습니다. 핵심은 re.match() 함수에 다음과 같은 정규식 패턴을 전달하는 것입니다.

^[a-zA-Z0-9]+$

이 패턴의 구성 요소는 다음과 같습니다.

  • ^ : 문자열의 시작을 의미합니다.
  • [a-zA-Z0-9] : 영문 대소문자와 숫자 한 글자를 나타냅니다.
  • + : 앞의 문자가 하나 이상 반복됨을 의미합니다.
  • $ : 문자열의 끝을 의미합니다.

즉, 이 패턴은 문자열 전체가 처음부터 끝까지 영문자나 숫자로만 이루어져 있어야만 일치한다고 판단합니다.

사용 예제

>>> import re
>>> bool(re.match('^[a-zA-Z0-9]+$', '789def'))
True
>>> bool(re.match('^[a-zA-Z0-9]+$', '789#%$def'))
False

위 예제에서 '789def'는 숫자와 알파벳으로만 구성되어 있으므로 True가 반환되고, 특수문자(#%$)가 포함된 '789#%$def'False가 반환됩니다.

bool()로 변환하는 이유

re.match()는 일치 여부에 따라 매치 객체(Match Object) 또는 None을 반환합니다. 따라서 결과가 실제로 존재하는지 명확하게 확인하려면 bool() 함수를 사용해 불리언 값으로 변환하는 것이 좋습니다. 매치 객체는 항상 참(True)으로 평가되고, None은 거짓(False)으로 평가되기 때문입니다.

참고로 파이썬 3.7 이상에서는 별도의 정규식 없이 내장 메서드인 str.isalnum()을 사용해 같은 작업을 수행할 수도 있습니다. 다만 isalnum()은 유니코드 기준으로 한글 등 다른 언어의 문자도 영숫자로 간주하므로, 엄격하게 ASCII 영문자와 숫자만 허용하려면 위와 같은 정규식 방식이 더 적합합니다.