[파이썬] 문자열의 정규식 매칭 음성 룩비하인드

정규식(Regular Expression)은 문자열 패턴을 정의하는 데 사용되는 강력한 도구입니다. 이를 활용하여 특정 패턴과 일치하는 문자열을 찾을 수 있습니다. 음성 룩비하인드(lookbehind)는 정규식에서 특정 패턴 앞에 특정 패턴이 나타나는지 확인하는 기능을 제공합니다. 이 블로그 포스트에서는 Python에서 문자열의 정규식 매칭과 음성 룩비하인드 기능을 사용하는 방법을 알아보겠습니다.

1. re 모듈 불러오기

Python에서 정규식을 사용하기 위해 re 모듈을 불러와야 합니다. 다음과 같이 import re 문을 사용하여 re 모듈을 불러옵니다.

import re

2. 문자열의 정규식 매칭

re 모듈을 사용하면 다양한 정규식 패턴과 문자열을 매칭할 수 있습니다. 예를 들어, 다음과 같이 정규식 패턴이 포함된 문자열을 찾을 수 있습니다.

pattern = r"ab+"
string = "ab abbb a abbbb"

matches = re.findall(pattern, string)
print(matches)

위 코드의 출력은 ['ab', 'abbb', 'abbbb']입니다. re.findall() 함수는 주어진 문자열에서 정규식 패턴에 해당하는 모든 부분 문자열을 찾아 리스트로 반환합니다.

3. 음성 룩비하인드

음성 룩비하인드(lookbehind)는 특정 패턴이 앞에 나타나는지 확인하는 기능을 제공합니다. 다음은 음성 룩비하인드를 사용하여 특정 패턴 앞의 문자열을 찾는 예제입니다.

pattern = r"(?<=ab)cd"
string = "abcd acd abcd"

matches = re.findall(pattern, string)
print(matches)

위 코드의 출력은 ['cd']입니다. (?<=ab)ab가 앞에 나타나는 경우에만 매칭이 이루어져야 한다는 의미입니다.

4. Combination of Matching and Lookbehind

정규식 매칭과 음성 룩비하인드를 함께 사용하여 더 복잡한 문자열 패턴을 처리할 수 있습니다. 다음은 정규식 매칭과 음성 룩비하인드를 함께 사용하여 특정 패턴 앞에 있는 문자열을 찾는 예제입니다.

pattern = r"(?<=ab)cd.*(?<!ef)g"
string = "abcd abcdefg abefg"

matches = re.findall(pattern, string)
print(matches)

위 코드의 출력은 ['cd abcdefg']입니다. cdab 앞에 나타나는 경우이며, g 앞에 ef가 나타나지 않는 경우에 매칭됩니다.

정규식 매칭과 음성 룩비하인드를 사용하면 복잡한 문자열 패턴을 찾을 때 유용하게 활용할 수 있습니다. re 모듈의 다양한 함수와 정규식 패턴을 조합하여 자신의 문자열 매칭 문제를 해결해보세요.