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

파이썬에서 정규식(re)을 활용해 두 문자열을 비교하는 방법

파이썬에서는 re 모듈의 search() 함수를 사용하면 두 문자열을 정규식 기반으로 비교할 수 있습니다. re.search()는 첫 번째 인자로 받은 패턴(문자열)이 두 번째 인자의 문자열 안에 존재하는지 검사하고, 매칭에 성공하면 Match 객체를, 실패하면 None을 반환합니다. 이 결과를 bool()로 변환하면 두 문자열의 일치 여부를 손쉽게 판단할 수 있습니다.

예제 코드

import re

s1 = 'Pink Forest'
s2 = 'Pink Forrest'

if bool(re.search(s1, s2)):
    print('Strings match')
else:
    print('Strings do not match')

실행 결과

위 코드를 실행하면 다음과 같은 출력을 얻습니다.

Strings do not match

동작 원리 설명

'Pink Forrest'라는 문자열 안에는 'Pink Forest'와 정확히 일치하는 부분이 없기 때문에, re.search()는 매칭에 실패하고 None을 반환합니다. 따라서 bool(None)은 False가 되어 else 블록이 실행되고 "Strings do not match"가 출력됩니다.

주의할 점

  • 정규식 특수 문자 처리: 비교 대상 문자열에 ., *, +, ? 등 정규식 특수 문자가 포함되어 있다면 의도치 않은 매칭이 발생할 수 있습니다. 이 경우 re.escape()를 사용해 특수 문자를 이스케이프 처리하는 것이 안전합니다.
  • 부분 일치 vs 전체 일치: re.search()는 문자열의 일부만 일치해도 True를 반환합니다. 두 문자열이 완전히 동일한지 확인하려면 re.fullmatch()를 사용하는 것이 좋습니다.
  • 단순 비교라면 == 연산자: 정규식 패턴이 필요 없는 단순한 문자열 비교라면 s1 == s2처럼 등호 연산자를 사용하는 것이 더 간결하고 효율적입니다.

정규식을 활용한 문자열 비교는 대소문자 무시(re.IGNORECASE), 패턴 기반 유연한 매칭 등 단순 비교로는 불가능한 작업에 특히 유용합니다.