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

Python – 정규 표현식으로 문자열이 같은 문자로 시작하고 끝나는지 확인하는 방법


문자열이 동일한 문자로 시작하고 끝나는지 확인해야 하는 경우, 정규 표현식(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() 함수를 사용해 문자열을 소문자로 변환한 뒤 비교하는 것이 좋습니다.