[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']가 됨.
'Python' 카테고리의 다른 글
[Python] 정규식을 이용한 반복 문자 줄이기 (0) | 2025.02.08 |
---|---|
[Python] 파이썬 2차원 리스트를 1차원으로 만드는 방법 / sum, itertools (0) | 2025.02.07 |
[Python] 파이썬 조합 순열, itertools combinations, permutations (0) | 2025.02.07 |
[코테준비/Python] 문제풀이 Tips / 시간 정렬 (0) | 2025.02.06 |
[Python] deque의 개념과 사용법, 장점 (0) | 2025.02.06 |