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

파이썬 정규식으로 문자열이 특정 문자만 포함하는지 확인하는 방법

정규 표현식(Regular Expression)을 사용해 주어진 문자열이 특정 문자들만으로 구성되어 있는지 확인해야 하는 경우가 있습니다. 이때는 먼저 정규식 패턴을 정의한 뒤, 대상 문자열이 해당 패턴을 따르는지 검사하면 됩니다.

파이썬에서는 기본 제공되는 re 모듈을 활용하면 간단하게 처리할 수 있습니다. 아래 예제를 통해 살펴보겠습니다.

예제 코드

import re

def check_string(my_string, regex_pattern):
   if re.search(regex_pattern, my_string):
      print("문자열이 정의된 문자만 포함하고 있습니다")
   else:
      print("문자열이 정의된 문자를 포함하지 않습니다")

regex_pattern = re.compile('^[Python]+$')

my_string_1 = 'Python'
print("확인할 문자열 :")
print(my_string_1)
check_string(my_string_1, regex_pattern)

my_string_2 = 'PythonInterpreter'
print("\n확인할 문자열 :")
print(my_string_2)
check_string(my_string_2, regex_pattern)

실행 결과

확인할 문자열 :
Python
문자열이 정의된 문자만 포함하고 있습니다

확인할 문자열 :
PythonInterpreter
문자열이 정의된 문자를 포함하지 않습니다

코드 설명

  • 정규식을 다루기 위해 필요한 re 모듈을 임포트합니다.

  • check_string이라는 함수를 정의하며, 이 함수는 검사할 문자열과 정규식 패턴을 매개변수로 받습니다.

  • re.search() 메서드를 호출하여 문자열 안에 정의된 문자 집합이 존재하는지 확인합니다.

  • 함수 외부에서는 re.compile() 메서드를 사용해 정규식 패턴을 미리 컴파일합니다.

  • 검사할 문자열을 정의하고 콘솔에 출력합니다.

  • 해당 문자열을 인자로 전달하며 함수를 호출합니다.

  • 검사 결과가 콘솔에 출력됩니다.

정규식 패턴 의미

예제에서 사용한 패턴 ^[Python]+$는 다음과 같은 의미를 가집니다.

  • ^ : 문자열의 시작을 나타냅니다.

  • [Python] : 대괄호 안에 나열된 문자(P, y, t, h, o, n) 중 하나와 일치함을 의미합니다.

  • + : 앞의 문자 클래스가 한 번 이상 반복될 수 있음을 나타냅니다.

  • $ : 문자열의 끝을 나타냅니다.

따라서 이 패턴은 문자열 전체가 오직 P, y, t, h, o, n 문자들로만 이루어져 있을 때 일치합니다. 그래서 'Python'은 통과하지만, 목록에 없는 'I'라는 문자가 포함된 'PythonInterpreter'는 검사에 실패하게 됩니다.

참고 사항

re.search() 대신 re.fullmatch()를 사용하면 시작(^)과 끝($) 앵커 없이도 문자열 전체가 패턴과 일치하는지 확인할 수 있어 코드를 더 간결하게 작성할 수 있습니다.