주어진 문자열에서 10+1 정규식 패턴과 일치하는 모든 부분을 찾아야 하는 경우가 있습니다. 이때 파이썬에서 기본 제공되는 re 모듈을 활용하면 간단하게 해결할 수 있습니다.
re.findall() 메서드란?
re 모듈에는 findall()이라는 메서드가 있는데, 이 메서드는 정규식 패턴과 검색 대상 문자열을 인자로 받아 해당 패턴과 일치하는 모든 항목을 리스트 형태로 반환합니다. 즉, 문자열 내에 패턴이 몇 번 등장하더라도 전부 찾아낼 수 있습니다.
예제 입력과 기대 출력
예를 들어 다음과 같은 입력 문자열이 있다고 가정해 보겠습니다.
10000001 hello world 10011 test100000001test.
여기서 10+1 패턴은 '1'로 시작하고, 그 뒤에 '0'이 하나 이상 반복되며, 다시 '1'로 끝나는 부분을 의미합니다. 따라서 기대하는 출력 결과는 다음과 같습니다.
10000001 1001 100000001
구현 코드
re 모듈을 사용한 실제 구현 코드는 아래와 같습니다.
import re
occ = re.findall("10+1", "10000001 hello world 10011 test100000001test.")
for i in occ:
print(i)위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
10000001 1001 100000001
코드 설명
import re로 정규식 모듈을 불러온 후, re.findall("10+1", ...)을 호출하여 패턴에 일치하는 모든 문자열을 리스트로 받습니다. 이후 for 반복문을 통해 각 일치 항목을 한 줄씩 출력합니다. 참고로 + 메타문자는 바로 앞의 문자('0')가 하나 이상 연속으로 나타남을 의미하므로, '0'이 여러 개인 긴 숫자도 모두 매칭됩니다.