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

Python 정규식으로 패턴의 0개 이상 발생을 매칭하는 방법

정규식에서 별표(*) 메타 문자는 바로 왼쪽에 있는 패턴이 0번 이상 반복되는 경우를 의미합니다. 즉, 해당 패턴이 전혀 나타나지 않아도 매칭에 성공하며, 여러 번 반복되는 경우에도 모두 매칭됩니다.

예제 코드

다음 코드는 문자열 'chihua huahua'에서 패턴 '\w'(영문자, 숫자, 밑줄)가 0개 이상 나타나는 부분을 모두 찾아 출력합니다.

import re
s = 'chihua huahua'
result = re.findall(r'\w*', s)
print(result)

실행 결과

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

['chihua', '', 'huahua', '']

결과 해석

re.findall() 함수는 정규식과 일치하는 모든 부분 문자열을 리스트 형태로 반환합니다. 실행 결과를 보면 'chihua'와 'huahua'라는 두 단어가 매칭되었으며, 그 사이와 문자열 끝에는 빈 문자열('')도 함께 포함되어 있습니다.

이러한 결과가 나오는 이유는 '*' 메타 문자가 0번 이상의 반복을 허용하기 때문입니다. 공백 문자가 있는 위치에서는 '\w' 패턴이 한 번도 나타나지 않았지만(즉, 0회 반복), 그 자체로 매칭에 성공하여 빈 문자열이 결과 목록에 추가된 것입니다.

참고로, 만약 최소 한 번 이상의 반복만 매칭하고 싶다면 '*' 대신 '+' 메타 문자를 사용하면 됩니다. '+'는 해당 패턴이 적어도 한 번은 나타나야 매칭에 성공하므로, 위 예제에서는 ['chihua', 'huahua']만 반환됩니다.