정규표현식, 실전 활용 꿀팁 (자주 쓰는 패턴과 응용 사례)
안녕하세요, 아이홀입니다! 정규표현식 두 번째 시간으로 다시 찾아왔습니다!
지난 1편에서는 정규표현식이 뭔지, 그리고 점(.), 역슬래시(\d, \w, \s), 대괄호([ ]), 수량자(*, +, ?, {}) 같은 기본 문법들을 배워봤죠! 오늘은 그 지식을 바탕으로 실생활에서 진짜 자주 쓰이는 정규표현식 패턴들과 응용 사례를 통해 정규표현식의 진짜 '힘'을 한번 느껴볼 거예요!
1. 넌 어디까지 탐욕스럽니? '탐욕적' vs '게으른' 매칭 (Greedy vs. Lazy)
정규표현식으로 어떤 패턴을 찾을 때, '이만큼 찾을까, 저만큼 찾을까?' 하고 고민하는 순간이 있습니다.
기본적으로 정규표현식은 '탐욕적(Greedy)'으로 작동합니다.이게 무슨 말이냐고요?
- 탐욕적 매칭 (Greedy Matching): 가능한 한 가장 길게 매칭합니다.
- 예시: 문자열
"<a><b>"에서/<.*>/(<로 시작하고.아무거나*0번 이상 반복되고>로 끝나는 패턴)- 결과:
<a><b>(전체를 다 찾아버림)
- 결과:
- 보통
*,+,{}같은 수량자는 기본적으로 탐욕적으로 작동합니다.
- 예시: 문자열
- 게으른 매칭 (Lazy Matching): 가능한 한 가장 짧게 매칭합니다.
- 탐욕적인 수량자 뒤에
?를 붙여주면 게으른 매칭으로 바뀝니다. - 예시: 문자열
"<a><b>"에서/<.*?>/- 결과:
<a>,<b>(각각 가장 짧은 패턴을 찾음)
- 결과:
- 이 '게으른' 옵션은 HTML 태그처럼 시작과 끝이 명확한 쌍을 찾을 때 아주 유용하답니다!
- 탐욕적인 수량자 뒤에
2. 묶어서 잡아라! 그룹과 캡처링
소괄호 ()는 정규표현식에서 엄청 중요한 역할을 합니다!
- 그룹핑 (Grouping): 여러 문자를 하나의 단위로 묶어줍니다.
- 예시:
(ab)+-> 'ab' 문자열이 한 덩어리로 반복되는 것을 찾아요. (ab,abab,ababab...)
- 예시:
- 캡처링 (Capturing): 묶은 패턴 중에서 특정 부분을 '따로 저장'할 수 있게 해줍니다. 이건 찾기뿐만 아니라 '바꾸기' 할 때나 특정 부분만 추출할 때 빛을 발합니다!
- 예시: 이름과 전화번호를 매칭시키고 싶을 때
(\w+) - (\d+)(이름과 번호를 각각 캡처)
- 예시: 이름과 전화번호를 매칭시키고 싶을 때
3. 이것도 되고 저것도 되는! 선택 (OR)
파이프 기호 |는 '이것 또는 저것' 이라는 의미로 사용됩니다. 여러 패턴 중 하나만 매칭될 때 유용해요.
- 예시:
apple|banana-> 'apple'이 있거나 'banana'가 있는 경우를 찾아요. - 예시:
(grape|berry) juice-> 'grape juice' 또는 'berry juice'를 찾아요.
정규표현식, 실전 활용 예제 💡
이제 실제 상황에서 자주 사용되는 패턴들을 예시와 함께 살펴볼까요?
예제 1: 전화번호 찾기 (휴대폰 번호)
대한민국 휴대폰 번호는 보통 '010-XXXX-XXXX' 형태죠.
- 패턴:
010-\d{4}-\d{4}010-: '010-'을 그대로 찾고\d{4}: 숫자 4자리를 각각 찾아요.
- 응용: 하이픈 없이 붙어있는 전화번호 (010XXXXXXXX)도 찾으려면?
- 패턴:
010-?\d{4}-?\d{4}(?가 0번 또는 1번 반복이니까 하이픈이 없어도 매칭됨!)- 여기서
010\d{8}형태로 쓸 수도 있겠죠? 더 짧지만, 가독성은 떨어질 수 있습니다.
- 여기서
- 패턴:
예제 2: 간단한 이메일 주소 형식 검증
사용자이름@도메인.최상위도메인 형태의 이메일을 간단하게 검증해볼까요?
- 패턴:
\w+@\w+\.\w+\w+: 알파벳, 숫자, '_'가 1개 이상 (사용자이름,도메인부분)@: '@' 문자 그대로\.: 점(.)은 메타문자이므로 앞에 \를 붙여줘야 해요.
예제 3: HTML 태그 안의 내용 추출
<b>중요한 내용</b> 같은 HTML 태그에서 '중요한 내용'만 쏙 뽑아내고 싶을 때.
- 문자열:
저는 <b>매우 중요한</b> 정보를 발견했습니다. - 패턴:
<b>(.*?)</b><b>: 태그를 찾고(.*?):.(아무 문자)가*(0번 이상) 반복되는데,?(게으르게) 매칭!</b>: 태그를 찾아요.()로 묶었으니 캡처링 그룹으로 '매우 중요한'이라는 내용만 쏙 뽑아낼 수 있습니다!
예제 4: 날짜 형식 찾기 (YYYY-MM-DD)
'2023-10-26' 같은 날짜 형식을 찾아봅시다.
- 패턴:
\d{4}-\d{2}-\d{2}\d{4}: 4자리 숫자 (년도)\d{2}: 2자리 숫자 (월, 일)-: 하이픈 그대로
마치며... 🚶♂️
오늘은 정규표현식의 탐욕적/게으른 매칭, 그룹핑, 그리고 선택(|)과 함께 실전에서 자주 쓰이는 패턴들을 살펴봤습니다.
어떠세요? 생각보다 어렵지 않게 데이터에서 원하는 정보를 쏙쏙 뽑아낼 수 있다는 걸 느끼셨으면 좋겠어요
정규표현식은 진짜 '연습'이 제일 중요합니다! 오늘 배운 패턴들을 가지고 이것저것 조합해보면서 '아, 이렇게 쓰는 거구나!' 하고 직접 익혀보시는 걸 강력 추천드려요!
다음 3편에서는 정규표현식을 더 능숙하게 다룰 수 있는 고급 기술들을 가지고 돌아오겠습니다.
궁금한 점은 언제든 댓글로 남겨주세요!
다음에 또 만나요! 👋
♥읽어주셔서 감사합니다♥
티스토리 댓글과 공감♥은 로그인이 필요 없습니다.
로그인하시면 구독 가능합니다.
'IT Lab > 코드 크래프트' 카테고리의 다른 글
| 정규표현식, 고수로 가는 길 (고급 기능과 성능 최적화 전략) (1) | 2025.09.19 |
|---|---|
| 정규표현식, 첫걸음 (개념과 알아야 할 기본 문법) (1) | 2025.09.15 |
| 티스토리 관리자에서 글 URL 한 번에 추출하고, 파이썬으로 제목 자동 매핑·파싱하기 (3) | 2025.08.29 |
| [Wi-Fi] QR Code Generator-무선접속 QR코드 생성 (10) | 2020.12.07 |
| [F5] L4스위치 Log 확인 방법 (13) | 2020.11.26 |
| [Cisco] ACS 인증서버 admin password 변경 방법(CLI) (2) | 2020.10.07 |
| [Cisco] Archive Backup Falure_ %ARCHIVE_CONFIG-4-ARCHIVE_SKIPPED (0) | 2020.06.24 |
| [Cisco] NX-OS Auto Config Backup (EEM) (0) | 2020.04.28 |