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

Python 정규식(Regex)에서 변수를 사용하는 방법

Python의 re 모듈로 정규식을 작성할 때, 고정된 패턴 대신 변수 값을 패턴에 동적으로 삽입해야 하는 경우가 자주 있습니다. 이럴 때는 간단히 문자열 연결(string concatenation)을 사용해 패턴 문자열을 만들면 됩니다.

다만 한 가지 주의할 점이 있습니다. 변수에 담기는 값에는 특수 문자나 메타 문자가 포함되어서는 안 되며, 변수 자체가 별도의 정규식 문법을 담지 않는 단순한 문자열이어야 합니다.

예제 코드

아래 예제는 문자열 연결을 통해 정규식 패턴에 변수를 삽입하는 기본적인 방법을 보여줍니다.

import re

s = 'I love books'
var_name = 'love'
result = re.search('(.+)' + var_name + '(.+)', s)
print(result)

var_name = 'hate'
s2 = 'I hate books'
result = re.search('(.+)' + var_name + '(.+)', s2)
print(result)

실행 결과

위 코드를 실행하면 각 검색이 성공했음을 나타내는 매치 객체(Match Object)가 출력됩니다.

<re.Match object; span=(0, 13), match='I love books'>
<re.Match object; span=(0, 13), match='I hate books'>

더 알아두면 좋은 팁

f-string으로 더 깔끔하게 작성하기

Python 3.6 이상에서는 f-string을 활용하면 패턴 조합이 훨씬 읽기 쉬워집니다.

result = re.search(f'(.+){var_name}(.+)', s)

변수에 특수 문자가 포함될 가능성이 있다면

변수 값에 정규식 특수 문자(예: ., *, ( 등)가 들어갈 수 있다면 re.escape()로 이스케이프 처리하는 것이 안전합니다.

import re
pattern = re.escape(var_name)
result = re.search(f'(.+){pattern}(.+)', s)

매치 결과 확인하기

매치 객체에서 실제로 매칭된 문자열을 꺼내려면 group() 메서드를 사용합니다.

if result:
    print(result.group())   # 전체 매칭 문자열
    print(result.group(1))  # 첫 번째 그룹
    print(result.group(2))  # 두 번째 그룹