
🔍 파이썬 완벽 가이드: 정규표현식(RegEx)으로 원하는 글자만 쏙쏙 뽑아내기
데이터 분석이나 웹 스크래핑을 하다 보면, 엄청나게 긴 텍스트 속에서 '숫자만' 뽑아내거나 '특정 알파벳'만 찾아내야 할 때가 있습니다. 이때 사용하는 강력한 돋보기 도구가 바로 정규표현식(Regular Expression, 줄여서 RegEx)입니다.
📖 1. 필수 용어 및 이론 정리
- import re: 파이썬에 내장된 정규표현식(RegEx) 도구 상자를 불러옵니다.
- re.findall(패턴, 문자열) 함수:
- 이름 그대로 문자열 안에서 패턴에 맞는 모든(all) 것을 찾아라(find)라는 뜻입니다.
- [가장 중요한 특징]: 찾은 결과물들을 항상 리스트(List) 형태 [ ] 로 묶어서 돌려줍니다.
- [a-c] (대괄호 패턴):
- 대괄호 []는 "이 괄호 안에 있는 글자 중 아무거나 하나"를 뜻합니다.
- a-c는 알파벳 순서대로 a부터 c까지, 즉 'a', 'b', 'c' 를 의미합니다.
- 결론적으로 [a-c]는 "문장 전체를 뒤져서 a, b, c 글자가 보이면 모조리 찾아와!" 라는 암호입니다.
💻 2. 코드로 보는 RegEx 분석
문제에 나온 코드를 한 줄씩 뜯어보고, 왜 첫 번째가 정답인지 확인해 볼까요?
import re
# [1] 분석할 원본 문장입니다.
txt = 'The rain in Spain'
# [2] txt 문장 안에서 'a', 'b', 'c' 글자를 모두 찾아서 리스트로 묶어 x에 저장합니다.
x = re.findall('[a-c]', txt)
# 원본 문장: T h e r (a) i n i n S p (a) i n
# 'a'가 총 두 번 발견되었고, b와 c는 없습니다.
print(x)
# 출력 결과: ['a', 'a']
💡 회원이 고르신 오답('The rin in Spin')은 언제 나오는 걸까요? 이 결과는 무언가를 '찾는' 것이 아니라, a, b, c를 찾아서 '빈칸으로 교체(삭제)' 했을 때 나오는 결과입니다. 만약 코드가 re.sub('[a-c]', '', txt) 였다면, 'a' 글자들이 모두 삭제되어서 고르신 답안인 'The rin in Spin'이 정답이 되었을 거예요!
📝 3. 핵심 한 줄 총정리 요약
"re.findall() 함수는 조건에 맞는 글자들을 싹 다 긁어모아서 대괄호 모양의 리스트 ['결과', '결과'] 형태로 돌려준다!"
🛠️ 4. 오늘의 Todo 연습 문제!
방금 배운 re.findall()과 대괄호 패턴을 활용해서 다음 문제를 풀어보세요.
[상황] 웹 크롤링으로 어떤 상품의 가격표 텍스트를 가져왔는데, 글자와 숫자가 섞여 있어서 숫자만 쏙 뽑아내고 싶습니다.
import re
price_text = "가격은 3500원 입니다."
[문제] 대괄호 패턴 안에 0-9를 넣으면 0부터 9까지의 모든 '숫자'를 찾아낼 수 있습니다. 위의 price_text에서 숫자들만 찾아서 리스트 형태로 뽑아내려면 코드를 어떻게 작성해야 할까요? (결과물이 ['3', '5', '0', '0'] 형태로 나오도록 코드를 완성해 보세요!)
1. x = re.findall('[0-9]', price_text)
2. re.findall('\d', price_text)

🔍 파이썬 완벽 가이드: 정규표현식(RegEx)으로 숨은 위치 찾기 (search와 \s)
정규표현식 도구 상자(re)에는 findall 외에도 아주 유용한 탐색 도구인 search가 들어있습니다. 이 도구는 문장을 쭉 읽다가 내가 찾는 조건이 나오면 "찾았다!" 하고 바로 탐색을 종료해 버리는 특징이 있습니다.
📖 1. 필수 용어 및 이론 정리
- re.search(패턴, 문자열) 함수:
- 문자열 안에서 패턴에 맞는 '가장 첫 번째 결과 딱 하나'만 찾아냅니다. (뒤에 조건에 맞는 게 더 있어도 무시합니다.)
- 결과물로 리스트가 아니라, 특별한 형태의 '매치 객체(Match object)'라는 것을 돌려줍니다.
- \s (공백 패턴):
- 알파벳 소문자 s는 Space(공백)를 의미합니다. 즉, \s는 띄어쓰기(스페이스바)를 찾으라는 암호입니다.
- x.start() 함수:
- search로 찾은 결과물(x)이 원본 문장 안에서 '몇 번째 위치(인덱스)'에서 시작하는지 그 번호를 알려줍니다.
- [핵심 주의사항]: 파이썬은 숫자를 셀 때 1이 아니라 0부터 센다는 것을 절대 잊으시면 안 됩니다!
💻 2. 코드로 보는 위치 탐색 분석
문제의 코드를 한 글자씩 뜯어보면서 컴퓨터가 어떻게 숫자를 세는지 확인해 보겠습니다.
import re
# [1] 원본 문장입니다.
txt = 'The rain in Spain'
# [2] 문장 안에서 '첫 번째 띄어쓰기(\s)'를 찾습니다.
x = re.search('\s', txt)
# 💡 컴퓨터가 문장의 위치(인덱스)를 세는 방식:
# T : 0 번째
# h : 1 번째
# e : 2 번째
# : 3 번째 <-- 앗! 여기서 첫 번째 공백(\s)을 찾았습니다! 탐색 종료.
# [3] 찾은 결과의 시작 위치(숫자)를 출력합니다.
print(x.start())
# 출력 결과: 3
컴퓨터는 'T'를 0번으로 치기 때문에, 첫 번째 띄어쓰기 공간은 자연스럽게 3번 자리가 되는 것입니다. 참 쉽죠?
📝 3. 핵심 한 줄 총정리 요약
"re.search()는 조건에 맞는 첫 번째 녀석만 찾으며, 파이썬에서 위치를 찾을 때(start())는 무조건 0부터 숫자를 센다!"
🛠️ 4. 오늘의 Todo 연습 문제!
방금 배운 search와 파이썬의 위치 세기(인덱싱) 규칙을 활용해서 다음 문제를 풀어보세요.
[상황] 위와 똑같은 문장이 있습니다. 이번에는 띄어쓰기가 아니라 특정한 단어가 시작되는 위치를 찾고 싶습니다.
import re
txt = 'The rain in Spain'
[문제] 위 문장에서 'rain' 이라는 단어가 처음으로 시작되는 위치(인덱스 번호)를 찾아서 출력하고 싶습니다. 코드를 x = re.search('rain', txt) 라고 작성했을 때, print(x.start())의 결과값으로 화면에 출력될 숫자는 무엇일까요? (직접 0부터 손가락으로 세어보세요!) 4
'두두 IT > 파이썬 퀴즈' 카테고리의 다른 글
| [W3S 오답노트] Python String Formatting(.2f, .1%, :,) (0) | 2026.05.06 |
|---|---|
| [W3S 오답노트] Python PIP(pip list) (0) | 2026.05.06 |
| [W3S 오답노트] Python JSON (1) | 2026.05.06 |
| [W3S 오답노트] Python Math (pow, math.sqrt(), .pi) (1) | 2026.05.06 |
| [W3S 오답노트] Python Dates (0) | 2026.05.06 |