문자열이 동일한 문자로 시작하고 끝나는지 확인해야 하는 경우, 정규 표현식(regular expression)을 활용하면 간단하게 처리할 수 있습니다. 파이썬의 re 모듈에서 제공하는 search 함수를 사용해 문자열의 시작과 끝이 특정 문자와 일치하는지 검사하는 메서드를 직접 정의할 수 있습니다.
예제 코드
아래는 이를 구현한 전체 예시입니다.
import re
regex_expression = r'^[a-z]$|^([a-z]).*\1$'
def check_string(my_string):
if(re.search(regex_expression, my_string)):
print("The given string starts and ends with the same character")
else:
print("The given string doesnot start and end with the same character")
my_string = "abcbabda"
print("The string is:")
print(my_string)
check_string(my_string)
실행 결과
The string is: abcbabda The given string starts and ends with the same character
정규 표현식 패턴 분석
이 예제의 핵심은 정규 표현식 r'^[a-z]$|^([a-z]).*\1$'입니다. 패턴을 나누어 살펴보면 다음과 같습니다.
^[a-z]$: 문자열이 소문자 하나로만 이루어진 경우입니다. 시작과 끝이 곧 같은 문자이므로 조건을 만족합니다.^([a-z]).*\1$: 첫 번째 문자를 그룹으로 캡처한 뒤(([a-z])), 중간에 어떤 문자들이 오더라도(.*) 마지막에 캡처된 문자와 동일한 문자(\1, 역참조)로 끝나는지 확인합니다.
코드 설명
필요한 모듈인
re를 임포트합니다.문자열을 매개변수로 받는
check_string메서드를 정의합니다.메서드 내부에서
search함수에 문자열과 정규 표현식을 인자로 전달하여 호출합니다.문자열의 시작 문자와 끝 문자가 일치하면 일치한다는 메시지가, 그렇지 않으면 일치하지 않는다는 메시지가 콘솔에 출력됩니다.
메서드 외부에서 검사 대상 문자열을 정의하고 콘솔에 출력합니다.
정의된 문자열을 인자로 전달하며 메서드를 호출합니다.
최종 결과가 콘솔에 표시됩니다.
정규 표현식 없이 확인하는 방법
정규 표현식을 사용하지 않고도 인덱싱을 통해 간단히 확인할 수 있습니다. 문자열의 첫 번째 문자와 마지막 문자를 비교하면 됩니다.
def check_string_simple(my_string):
if len(my_string) > 0 and my_string[0] == my_string[-1]:
return True
return False
print(check_string_simple("abcbabda")) # True
print(check_string_simple("hello")) # False
다만 이 방법은 대소문자를 구분하므로, 필요에 따라 lower() 함수를 사용해 문자열을 소문자로 변환한 뒤 비교하는 것이 좋습니다.