파이썬으로 개발을 하다 보면 특정 문자열에 특수 문자가 포함되어 있는지 확인해야 하는 경우가 종종 있습니다. 이럴 때는 'check_string'이라는 메서드를 정의하고, 정규 표현식(regular expression)과 re 모듈의 'compile' 메서드를 활용하여 문자열 내에 특수 문자의 존재 여부를 손쉽게 검사할 수 있습니다. 메서드 외부에서 문자열을 정의한 뒤, 해당 문자열을 매개변수로 전달하며 메서드를 호출하는 방식으로 동작합니다.
예제 코드
아래는 위 내용을 구현한 전체 예제입니다.
import re
def check_string(my_string):
regex = re.compile('[@_!#$%^&*()<>?/\|}{~:]')
if(regex.search(my_string) == None):
print("문자열에 특수 문자가 포함되어 있지 않습니다.")
else:
print("문자열에 특수 문자가 포함되어 있습니다.")
my_string = "PythonInterpreter"
print("입력된 문자열 :")
print(my_string)
check_string(my_string)출력 결과
입력된 문자열 : PythonInterpreter 문자열에 특수 문자가 포함되어 있지 않습니다.
코드 설명
먼저 정규 표현식을 사용하기 위해 필요한 re 모듈을 임포트합니다.
문자열을 매개변수로 받는 'check_string' 메서드를 정의합니다.
'compile' 메서드로 특수 문자 패턴을 미리 컴파일한 후, 'search' 메서드를 호출하여 문자열 안에 해당 패턴이 존재하는지 확인합니다.
검색 결과가 None이면 특수 문자가 없다는 의미이며, 그렇지 않으면 특수 문자가 포함되어 있는 것입니다.
메서드 외부에서 검사할 문자열을 정의하고 콘솔에 출력합니다.
정의된 문자열을 함수의 매개변수로 전달하여 호출하고, 최종 검사 결과를 콘솔에 출력합니다.
참고: 정규 표현식 패턴의 의미
위 코드에서 사용된 패턴 [@_!#$%^&*()<>?/\|}{~:]은 대괄호([]) 안에 나열된 문자들 중 하나라도 문자열에 포함되어 있는지를 검사합니다. 검사 대상에 다른 특수 문자를 추가하고 싶다면 대괄호 안에 해당 문자를 넣어주면 됩니다. 또한, 자주 사용되는 특수 문자 집합을 직접 작성하기 번거롭다면 파이썬 기본 라이브러리인 string 모듈의 string.punctuation 상수를 활용하는 방법도 있습니다.