기본 콘텐츠로 건너뛰기

추천 가젯

리액트 + 비트(Vite)로 모바일 청첩장 만들기 — 2편

모바일 청첩장 시리즈 2편 · R2 갤러리 & Firebase 방명록 Cloudflare R2 · Functions Firebase Firestore 클라우드플레어 R2로 갤러리 저장하고, Firebase로 방명록 달기 안녕하세요, 병민입니다 🙌 1편에서 전체 흐름을 잡았고, 이번엔 사진 업로드/보관 과 방명록 을 연결합니다. 서버는 따로 없고 Cloudflare Pages 를 쓰고 있으니, Pages Functions (= 워커)로 R2에 사전서명 URL을 만들어주고, 프론트에서 그 URL로 바로 업로드하는 구조예요. 방명록은 Firebase DB로 간단·안전하게! 전체 그림 프론트(React) → /api/r2/upload 로 업로드용 URL 요청 → R2에 파일 PUT 프론트(React) → /api/r2/list 로 목록 요청 → 갤러리 렌더 프론트(React) → Firebase SDK로 방명록 작성/조회 1) R2 버킷 & Pages Functions 준비 Cloudflare 대시보드 > R2 > Create bucket (예: wedding-gallery ) 버킷 > Settings > CORS 에서 사이트 도메인 허용(예: https://*.pages.dev , 커스텀 도메인) Pages 프로젝트 > Settings > Functions 에서 R2 바인딩 추가: ...

파이썬 re 모듈 완전 정복 🔍

RegEx icon

파이썬 re 모듈 완전 정복 🔍

re 모듈은 정규표현식을 이용한 문자열 검색, 매칭, 치환, 그룹핑 등 고급 처리 기능을 제공합니다. 기본부터 실전 활용까지 편하게 정리했어요.

1. 기본 패턴 검색 및 매칭

import re

pattern = r'\d+'  # 숫자 1개 이상
text = "house 123 number"
m = re.search(pattern, text)
print(m.group())  # 123

2. 전체 일치 찾기 - `findall()`

import re

text = "abc123def456ghi789"
numbers = re.findall(r'\d+', text)
print(numbers)  # ['123', '456', '789']

3. `match()`와 `fullmatch()` 차이

import re

print(bool(re.match(r'\d+', "123abc")))      # True
print(bool(re.match(r'\d+', "abc123")))      # False
print(bool(re.fullmatch(r'\d+', "123")))     # True
print(bool(re.fullmatch(r'\d+', "123abc")))  # False

4. 문자열 치환: `sub()` 사용

import re

text = "Email: user@example.com"
clean = re.sub(r'\S+@\S+', '[hidden email]', text)
print(clean)  # Email: [hidden email]

5. 그룹핑과 캡처 사용법

import re

text = "2025-06-30"
m = re.match(r'(\d{4})-(\d{2})-(\d{2})', text)
if m:
    year, month, day = m.groups()
    print(year, month, day)  # 2025 06 30

요약

  • search()로 부분 매칭, findall()로 모든 일치 항목 추출
  • match()는 시작부터, fullmatch()는 전체 문자열이 패턴과 일치할 때 True
  • sub()로 문자 치환, 원하는 형식으로 변환 가능
  • 그룹핑(`()`), 캡처, `.groups()`를 통해 상세한 매칭 정보 획득

댓글

가장 많이 본 글

Icons by Flaticon