[파이썬] 문자열의 정규식 매칭 반복

정규식(regular expression)은 문자열 패턴을 표현하는 강력한 도구입니다. 이를 활용하여 특정한 패턴을 가진 문자열을 찾거나 추출할 수 있습니다. Python에서는 re 모듈을 사용하여 정규식을 처리할 수 있습니다. 이번 블로그 포스트에서는 문자열의 정규식 매칭을 반복하는 방법에 대해 알아보겠습니다.

정규식 매칭 반복

정규식을 사용하여 문자열을 매칭할 때, 기본적으로는 첫 번째 매칭만을 반환합니다. 하지만 때로는 문자열에서 패턴이 반복되어 나타나는 모든 매칭을 찾고 싶을 수 있습니다. 이럴 때에는 findall 함수를 사용하면 됩니다.

import re

string = "apple apple apple"
pattern = "apple"

matches = re.findall(pattern, string)
print(matches)  # ['apple', 'apple', 'apple']

findall 함수는 문자열에서 패턴과 일치하는 모든 부분을 리스트로 반환합니다. 위의 예제에서는 string 변수에서 “apple” 패턴이 세 번 반복되는 것을 확인할 수 있습니다.

패턴 반복 수 지정

패턴을 반복하여 매칭하는 방법을 더 세밀하게 제어할 수도 있습니다. 정규식에서는 {} 중괄호를 사용하여 패턴의 반복 수를 지정할 수 있습니다.

다음은 패턴 “ab”가 2~4번 반복되는 경우를 매칭하는 예제입니다.

import re

string = "ab ab ab ab ab"
pattern = "ab{2,4}"

matches = re.findall(pattern, string)
print(matches)  # ['abb', 'abbb', 'abbbb']

위의 예제에서는 “ab” 패턴이 2번, 3번, 4번 반복되는 매칭을 찾아서 리스트로 반환합니다.

패턴 반복을 제한하지 않는 경우

패턴 반복 수를 지정하지 않으면 해당 패턴이 0번 이상 반복되는 경우를 매칭합니다. 이를 표현하기 위해 * 기호를 사용합니다.

다음은 “a”로 시작하고 “b”가 0번 이상 반복되는 경우를 매칭하는 예제입니다.

import re

string = "a aba abb abbb"
pattern = "ab*"

matches = re.findall(pattern, string)
print(matches)  # ['a', 'ab', 'abb', 'abbb']

위의 예제에서는 “a”, “aba”, “abb”, “abbb” 패턴을 매칭하여 리스트로 반환합니다.

결론

Python의 re 모듈을 사용하면 문자열의 정규식 매칭을 반복하는 것이 간단하고 편리합니다. findall 함수를 사용하여 반복되는 매칭을 찾거나, {} 중괄호를 사용하여 패턴 반복 수를 제어하는 등 다양한 방법으로 문자열을 처리할 수 있습니다. 정규식을 활용하여 문자열 처리를 더욱 효율적으로 할 수 있습니다.