๐พ ์ ๊ทํํ์์ด๋?
์ ๊ท ํํ์์ ๋ฌธ์์ด์์ ํน์ ํจํด์ ์ฐพ๊ฑฐ๋ ๋งค์นญ, ๋์ฒดํ๋ ๋ฐ ์ฌ์ฉ๋๋ ํน์ํ ๋ฌธ์์ด์ด๋ค. Python์์๋ re ๋ชจ๋์ ํตํด ์ ๊ท ํํ์ ๊ธฐ๋ฅ์ด ์ ๊ณต๋๋ค.
import re # ์ ๊ท ํํ์ ๋ชจ๋ ๊ฐ์ ธ์ค๊ธฐ
# ์ ๊ท ํํ์ ํจํด ๋ฆฌ์คํธ ์ ์
patterns = [
r'pattern1',
r'pattern2',
r'pattern3'
]
๐พ Python ์ ๊ท ํํ์ ํจํด ๋ฆฌ์คํธ์ ์ฉ๋
Python์์ ์ ๊ท ํํ์(Regular Expression) ํจํด ๋ฆฌ์คํธ๋ ๋ฌธ์์ด ํจํด์ ๊ฒ์ํ๊ณ ์กฐ์ํ ์ ์๊ฒ ํ๋ ๋๊ตฌ์ด๋ค. ๋ณดํต ๋ฐ์ดํฐ๋ฅผ ์ ์ฒ๋ฆฌํ ๋ ์ ๊ท ํํ์ ๊ท์น๋ค์ ๋ฃ์ด์ ์ ๋ชฉ์ ๋ฐ๊พธ๊ฑฐ๋, ํ์์๋ ๋ฌธ๊ตฌ๋ค์ ์์ ๊ฑฐ๋ ์ถ๊ฐํ๋๋ฐ ํ์ฉํ๋ค. ํ์ง์ด ์ข์ ๋ฐ์ดํฐ๊ฐ ์์ด์ผ ์ดํ์ ์์ ์ด ์๋ฏธ๊ฐ ์๋ ๊ฒ ๊ฐ๊ธฐ ๋๋ฌธ์ ์ค์ํ ๊ณผ์ ์ธ ๊ฒ ๊ฐ๋ค. ๊ตฌ์ฒด์ ์ธ ํ์ฉ ์ฌ๋ก๋ฅผ ์๊ฐํ์๋ฉด ์๋์ ๊ฐ๋ค.
1. ํน์ ํจํด์ ๊ฐ์ง ๋ฌธ์ฅ ์ฐพ๊ธฐ
import re
patterns = [
r'\b\w+ing\b', # 'ing'๋ก ๋๋๋ ๋จ์ด
r'\b\d{3}-\d{4}\b', # 123-4567 ํ์์ ๋ฒํธ
r'[A-Z][a-z]+' # ๋๋ฌธ์๋ก ์์ํ๋ ๋จ์ด
]
text = "Running fast with phone 555-4321. John is calling."
# ๋ชจ๋ ํจํด์ ๊ฒ์ํ๊ธฐ
for pattern in patterns:
matches = re.findall(pattern, text)
print(f"ํจํด '{pattern}'์ ์ผ์น ํญ๋ชฉ: {matches}")
2. ์ด๋ฉ์ผ์ฃผ์๊ฐ ๋ฐ๋์์ ๋ ํ๋ฒ์ ๋ณ๊ฒฝํ๊ธฐ
import re
# HTML ํ๊ทธ์ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ์ฐพ๋ ํจํด ๋ฆฌ์คํธ
patterns = [
r'<[^>]+>', # HTML ํ๊ทธ
r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}' # ์ด๋ฉ์ผ ์ฃผ์
]
html_text = """
<div>์ฐ๋ฝ์ฒ: <a href="mailto:john@example.com">John</a></div>
<p>๋๋ jane.doe@company.co.kr๋ก ๋ฌธ์ํ์ธ์.</p>
"""
# ๊ฐ ํจํด๋ณ๋ก ๋งค์นญ ํญ๋ชฉ ์ฐพ๊ธฐ
for i, pattern in enumerate(patterns):
matches = re.findall(pattern, html_text)
print(f"ํจํด {i+1} ๊ฒฐ๊ณผ: {matches}")
# ํจํด ๋งค์นญ ๊ฒฐ๊ณผ๋ฅผ ๋์ฒดํ๊ธฐ
for pattern in patterns:
html_text = re.sub(pattern, "[REDACTED]", html_text)
print("\n์ฒ๋ฆฌ ํ ํ
์คํธ:")
print(html_text)
๐พ ์ฃผ์ ๋ฉํ๋ฌธ์
ํ์ฉ ๊ฐ๋ฅ์ฑ์ด ๋์ ์ฃผ์ ๋ฉํ ๋ฌธ์์ ํน์ ์ํ์ค๋ฅผ ์ ๋ฆฌํด๋ณด์๋ค!
- . - ์ค๋ฐ๊ฟ์ ์ ์ธํ ๋ชจ๋ ๋ฌธ์ ํ๋์ ์ผ์น
- ^ - ๋ฌธ์์ด์ ์์
- $ - ๋ฌธ์์ด์ ๋
- * - 0๋ฒ ์ด์ ๋ฐ๋ณต
- + - 1๋ฒ ์ด์ ๋ฐ๋ณต
- ? - 0๋ฒ ๋๋ 1๋ฒ ๋ฐ๋ณต
- {n} - ์ ํํ n๋ฒ ๋ฐ๋ณต
- {n,} - n๋ฒ ์ด์ ๋ฐ๋ณต
- {n,m} - n๋ฒ ์ด์ m๋ฒ ์ดํ ๋ฐ๋ณต
- \ - ํน์ ๋ฌธ์ ์ด์ค์ผ์ดํ
- [] - ๋ฌธ์ ํด๋์ค (๊ดํธ ์์ ๋ฌธ์ ์ค ํ๋์ ์ผ์น)
- | - ๋์ (OR ์ฐ์ฐ)
- () - ๊ทธ๋ฃนํ
- \d - ์ซ์์ ์ผ์น (= [0-9])
- \D - ์ซ์๊ฐ ์๋ ๋ฌธ์์ ์ผ์น (= [^0-9])
- \s - ๊ณต๋ฐฑ ๋ฌธ์์ ์ผ์น (๊ณต๋ฐฑ, ํญ, ์ค๋ฐ๊ฟ ๋ฑ)
- \S - ๊ณต๋ฐฑ์ด ์๋ ๋ฌธ์์ ์ผ์น
- \w - ์ํ๋ฒณ, ์ซ์, ๋ฐ์ค๊ณผ ์ผ์น (= [a-zA-Z0-9_])
- \W - ์ํ๋ฒณ, ์ซ์, ๋ฐ์ค์ด ์๋ ๋ฌธ์์ ์ผ์น
- \b - ๋จ์ด ๊ฒฝ๊ณ
์ด์ฒ๋ผ Python์์ ์ ๊ท ํํ์ ํจํด ๋ฆฌ์คํธ๋ ๋ณต์กํ ํ ์คํธ ์ฒ๋ฆฌ ์์ ์ ์ฒด๊ณ์ ์ผ๋ก ํ๋ฒ์ ์ํํ๊ธฐ ์ข์ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค!