본문 바로가기
  • AI 개발자가 될래요
Python

[Python] 정규식을 이용하여 특정 개수 문자 패턴 찾기

by 꿀개 2025. 2. 8.

[Python] 정규식을 이용하여 특정 개수 문자 패턴 찾기

 

입력 문자열을 특정 개수대로 나누고 싶을 때 사용한다.

import re

s = "abcdefghi"

for i in range(1, len(s) + 1):  # i가 1부터 시작하도록 설정
    pattern = re.compile(f'.{{{i}}}')  # 정확히 i개짜리 그룹 찾기
    print(pattern.findall(s))

 

실행 결과는 아래와 같다.

원하는 대로 특정 개수만큼 문자열을 자른 것을 볼 수 있다.

['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
['ab', 'cd', 'ef', 'gh']
['abc', 'def', 'ghi']
['abcd', 'efgh']
['abcde', 'fghi']
['abcdef', 'ghi']
['abcdefg', 'hi']
['abcdefgh', 'i']
['abcdefghi']

 

정규식 해석

pattern = re.compile(f'.{{{i}}}')

 

이 부분에서 f'.{{{i}}}'가 무엇을 의미하는지 보자.

 

 

  • f'...' (f-string 사용)
    • f'...'는 파이썬의 포맷 문자열(f-string) 기능을 이용하는 것.
    • {i} 부분이 i의 값으로 대체됨.
    • 예를 들어, i = 3이면 f'.{{3}}' → '.{3}'로 변환됨.
  • . (점, Dot)
    • 정규식에서 .(dot)은 **"아무 문자 하나"**를 의미함.
    • 예: . → 'a', 'b', '1', '@' 등 모든 문자와 매칭됨.
  • {{{i}}} → {i}
    • {{...}}는 f-string에서 {}를 문자 그대로 출력하려고 두 번 중첩한 것.
    • f'.{{{i}}}'에서 {i} 부분이 숫자로 변환됨.
    • i = 3이면 '\\{3\\}'가 되고, 정규식에서 {3}은 **"정확히 3개"**의 의미를 가짐.
  • 결과적으로 ' .{3} '
    • "아무 문자나 3개"와 매칭됨.
    • 예를 들어 "abcdefghi"에 적용하면 ['abc', 'def', 'ghi']가 됨.