Search

μ •κ·œ ν‘œν˜„μ‹

μ •κ·œ ν‘œν˜„μ‹

λ¬Έμžμ—΄μ—μ„œ νŠΉμ •ν•œ νŒ¨ν„΄μ„ μ°Ύκ±°λ‚˜ λŒ€μ²΄ν•  λ•Œ μ‚¬μš©ν•˜λŠ” νŒ¨ν„΄ 기반의 λ¬Έμžμ—΄ ν‘œν˜„μ‹
μ •κ·œν‘œν˜„μ‹μ„ 톡해, μ‚¬μš©μžκ°€ μž…λ ₯ν•œ 아이디(영문 λ˜λŠ” ν•œκΈ€), λΉ„λ°€λ²ˆν˜Έ(영문+숫자+특수문자), 이메일(xxx@xxx.com) 등이 μœ νš¨ν•œ 데이터인지 μ μ ˆμ„±μ„ νŒλ‹¨ν•˜λŠ” 데에 μ‚¬μš©λœλ‹€.

μ •κ·œ ν‘œν˜„μ‹

λ¬Έμžμ—΄μ˜ νŠΉμ • ν˜•νƒœλ₯Ό μ°Ύμ•„λ‚΄κΈ° μœ„ν•œ νŒ¨ν„΄ ν‘œν˜„μ‹
νŒŒμ΄μ¬μ—μ„œλŠ” μ •κ·œν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œ re λͺ¨λ“ˆμ„ μ‚¬μš©ν•©λ‹ˆλ‹€.
regular expression"의 μ€„μž„λ§λ‘œ, "μ •κ·œ ν‘œν˜„μ‹"을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

파이썬 μ •κ·œ ν‘œν˜„μ‹ μ‚¬μš©μ„ μœ„ν•΄ μ•Œμ•„μ•Ό ν•  것

1.
μ •κ·œν‘œν˜„μ‹ flag
2.
μ •κ·œν‘œν˜„μ‹ 기호
3.
raw string
4.
re λͺ¨λ“ˆμ˜ ν•¨μˆ˜

μ •κ·œν‘œν˜„μ‹ flag

μ •κ·œ ν‘œν˜„μ‹μ—μ„œ νŠΉμ •ν•œ λ™μž‘μ„ μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄μ„œ μ‚¬μš©ν•˜λŠ” 문자
ν”Œλž˜κ·Έ
μ„€λͺ…
i
λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λ³„ν•˜μ§€ μ•Šκ³  λ§€μΉ˜ν•©λ‹ˆλ‹€.
g
μ „μ—­ 검색을 μˆ˜ν–‰ν•©λ‹ˆλ‹€. λ¬Έμžμ—΄ λ‚΄μ—μ„œ λͺ¨λ“  맀치λ₯Ό μ°ΎμŠ΅λ‹ˆλ‹€.
m
닀쀑 ν–‰ λͺ¨λ“œλ‘œ μž‘λ™ν•©λ‹ˆλ‹€. ^λŠ” 각 μ€„μ˜ μ‹œμž‘κ³Ό λ§€μΉ˜ν•˜κ³ , $λŠ” 각 쀄 끝과 λ§€μΉ˜ν•©λ‹ˆλ‹€.

ν”Œλž˜κ·Έ i

λŒ€μ†Œλ¬Έμž ꡬ뢄 없이, λ¬Έμžμ—΄μ˜ νŒ¨ν„΄μ„ λ§€μΉ­ν•˜λŠ” λ¬Έμžμž…λ‹ˆλ‹€.

λŒ€μ†Œλ¬Έμž ꡬ뢄 없이 맀칭 μ˜ˆμ‹œμ½”λ“œ

import re # μ •κ·œ ν‘œν˜„μ‹ # - λ¬Έμžμ—΄ apple 을 λŒ€μ†Œλ¬Έμž ꡬ뢄없이 맀칭 pattern = r'(?i)apple' text_list = ['apple', 'Apple', 'APPLE', 'aPPle', 'app' ] for text in text_list: # re.match()둜 νŒ¨ν„΄ 확인 match = re.match(pattern, text) if match: print("νŒ¨ν„΄ λ§€μΉ˜β­• : ", match.group()) else: print("νŒ¨ν„΄ 맀치❌")
Python
볡사

μ‹€ν–‰κ²°κ³Ό

νŒ¨ν„΄ λ§€μΉ˜β­• : apple νŒ¨ν„΄ λ§€μΉ˜β­• : Apple νŒ¨ν„΄ λ§€μΉ˜β­• : APPLE νŒ¨ν„΄ λ§€μΉ˜β­• : aPPle νŒ¨ν„΄ 맀치❌
Python
볡사

ν”Œλž˜κ·Έ g

λ¬Έμžμ—΄ 전역에 λŒ€ν•΄μ„œ μΌμΉ˜ν•˜λŠ” νŒ¨ν„΄μ„ 찾도둝 μ§€μ •ν•˜λŠ” λ¬Έμžμž…λ‹ˆλ‹€.
일반적인 ν”„λ‘œκ·Έλž˜λ° 언어에선 β€˜νŒ¨ν„΄/g’ ν˜•μ‹μœΌλ‘œ 전역검색 νŒ¨ν„΄μ„ μ‚¬μš©ν•˜μ§€λ§Œ, νŒŒμ΄μ¬μ—μ„œλŠ” r’(?g)νŒ¨ν„΄β€™ κ³Ό 같은 ν˜•μ‹μ€ μ—†κ³  λŒ€μ‹  findall() ν•¨μˆ˜λ‘œ μ²˜λ¦¬ν•œλ‹€.

전역검색 μ˜ˆμ‹œμ½”λ“œ

import re pattern = r'apple' text = 'An apple a day keeps the doctor away. \n I love apples.' # re.findall()둜 νŒ¨ν„΄ 검색 (μ „μ—­ 검색) matches = re.findall(pattern, text, re.MULTILINE) if matches: for match in matches: print("νŒ¨ν„΄ λ§€μΉ˜β­• : ", match) else: print("νŒ¨ν„΄ 맀치❌")
Python
볡사
β€˜νŒ¨ν„΄/g’ findall() : μ •κ·œν‘œν˜„μ‹ g ν”Œλž˜κ·ΈλŠ” νŒŒμ΄μ¬μ—μ„œ findall() ν•¨μˆ˜λ‘œ κ΅¬ν˜„λœλ‹€.
β€’
re.findall( νŒ¨ν„΄, λ¬Έμžμ—΄, μ˜΅μ…˜)
ν•΄λ‹Ή λ¬Έμžμ—΄μ΄ νŒ¨ν„΄μ— λ§€μΉ­λ˜λŠ” λ¬Έμžμ—΄λ“€μ„ 리슀트둜 λ°˜ν™˜ν•©λ‹ˆλ‹€.
μ˜΅μ…˜
λ™μž‘
re.MULTILINE
- 각 μ€„μ˜ μ‹œμž‘κ³Ό 끝에 λŒ€ν•΄ 맀치λ₯Ό μˆ˜ν–‰ν•œλ‹€. - '^'와 '$' 메타 문자λ₯Ό μ‚¬μš©ν•˜μ—¬ 각 μ€„μ˜ μ‹œμž‘κ³Ό λμ—μ„œ νŒ¨ν„΄κ³Ό μΌμΉ˜ν•˜λŠ” λ¬Έμžμ—΄μ„ μ°ΎλŠ”λ‹€. - 주어진 ν…μŠ€νŠΈκ°€ μ—¬λŸ¬ μ€„λ‘œ 이루어져 μžˆμ„ λ•Œ μœ μš©ν•˜κ²Œ μ‚¬μš©λœλ‹€.
re.DOTALL
- κ°œν–‰ 문자λ₯Ό ν¬ν•¨ν•˜μ—¬ λͺ¨λ“  λ¬Έμžμ™€ λ§€μΉ˜ν•œλ‹€. - '.' 메타 문자λ₯Ό μ‚¬μš©ν•˜μ—¬ λͺ¨λ“  λ¬Έμžμ™€ λ§€μΉ˜ν•œλ‹€. - 주어진 ν…μŠ€νŠΈκ°€ κ°œν–‰ 문자λ₯Ό ν¬ν•¨ν•˜κ³  μžˆμ„ λ•Œ, κ°œν–‰ 문자λ₯Ό ν¬ν•¨ν•˜μ—¬ 전체 ν…μŠ€νŠΈμ—μ„œ νŒ¨ν„΄μ„ μ°ΎλŠ”λ‹€.

ν”Œλž˜κ·Έ m

μ—¬λŸ¬ μ€„λ‘œ μž‘μ„±λœ λ¬Έμžμ—΄μ— λŒ€ν•˜μ—¬, μ—¬λŸ¬ 쀄 λͺ¨λ‘μ—μ„œ νŒ¨ν„΄μ„ λ§€μΉ­ν•˜λ„λ‘ ν•˜λŠ” λ¬Έμžμž…λ‹ˆλ‹€.
닀쀑 ν–‰μ˜ λ¬Έμžμ—΄μ— λŒ€ν•˜μ—¬, 닀쀑 ν–‰ λͺ¨λ“œκ°€ μ•„λ‹Œ κ²½μš°μ™€ 닀쀑 ν–‰ λͺ¨λ“œλ₯Ό λΉ„κ΅ν•˜μ—¬ μ΄ν•΄ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

닀쀑 ν–‰ λͺ¨λ“œκ°€ μ•„λ‹Œ 경우

import re # (?m) 닀쀑행λͺ¨λ“œ(MULTILINE)κ°€ μ•„λ‹Œ 경우 pattern = r'^apple' text = '''apple - 첫째 μ€„μ˜ 사과 apple - λ‘˜μ§Έ μ€„μ˜ 사과 ''' # re.findall()둜 νŒ¨ν„΄ 검색 (μ „μ—­ 검색) matches = re.findall(pattern, text) if matches: for match in matches: print("νŒ¨ν„΄ λ§€μΉ˜β­• : ", match) else: print("νŒ¨ν„΄ 맀치❌")
Python
볡사

μ‹€ν–‰κ²°κ³Ό

νŒ¨ν„΄ λ§€μΉ˜β­• : apple
Python
볡사
^ κΈ°ν˜ΈλŠ” μ‹œμž‘ν•˜λŠ” 뢀뢄을 λ§€μΉ­ν•˜λŠ” νŒ¨ν„΄ κΈ°ν˜Έμž…λ‹ˆλ‹€.
1~2쀄 λͺ¨λ‘ μ‹œμž‘ν•˜λŠ” 뢀뢄에 apple 이 μžˆμ§€λ§Œ, μœ„ μ˜ˆμ‹œμ²˜λŸΌ 닀쀑 ν–‰ λͺ¨λ“œκ°€ μ•„λ‹Œ κ²½μš°μ—λŠ” λ¬Έμžμ—΄ 전체에 λŒ€ν•˜μ—¬ μ‹œμž‘ν•˜λŠ” 뢀뢄이 apple 인 첫 λ¬Έμž₯에 λŒ€ν•œ νŒ¨ν„΄λ§Œ λ§€μΉ­λ©λ‹ˆλ‹€.

닀쀑 ν–‰ λͺ¨λ“œ

import re # (?m) 닀쀑 ν–‰λͺ¨λ“œ pattern = r'(?m)^apple' text = '''apple - 첫째 μ€„μ˜ 사과 apple - λ‘˜μ§Έ μ€„μ˜ 사과 ''' # re.findall()둜 νŒ¨ν„΄ 검색 matches = re.findall(pattern, text) if matches: for match in matches: print("νŒ¨ν„΄ λ§€μΉ˜β­• : ", match) else: print("νŒ¨ν„΄ 맀치❌")
Python
볡사

μ‹€ν–‰κ²°κ³Ό

νŒ¨ν„΄ λ§€μΉ˜β­• : apple νŒ¨ν„΄ λ§€μΉ˜β­• : apple
Python
볡사
닀쀑 ν–‰ λͺ¨λ“œλ₯Ό μ§€μ •ν•˜κΈ° μœ„ν•΄μ„œ, νŒ¨ν„΄μ„ λ‹€μŒκ³Ό 같이 μ§€μ •ν•©λ‹ˆλ‹€.
pattern = r'(?m)^apple'
Python
볡사
(?m) 뢀뢄이 닀쀑 ν–‰ λͺ¨λ“œλ₯Ό μ§€μ •ν•˜λŠ” λΆ€λΆ„μž…λ‹ˆλ‹€. μ‹€ν–‰ κ²°κ³Όλ₯Ό 보면 각 ν–‰μ˜ μ‹œμž‘ν•˜λŠ” λΆ€λΆ„μ˜ λ¬Έμžμ—΄ apple 을 λ§€μΉ­ν•˜λŠ” 것을 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.
(?m) 기호둜 닀쀑 ν–‰ λͺ¨λ“œλ₯Ό 지정할 μˆ˜λ„ μžˆμ§€λ§Œ, νŒŒμ΄μ¬μ—μŠ€λŠ” findall() ν•¨μˆ˜μ—μ„œ μ˜΅μ…˜μ„ μ§€μ •ν•˜μ—¬ 닀쀑 ν–‰ λͺ¨λ“œλ₯Ό μ„€μ •ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.
import re # 닀쀑 ν–‰λͺ¨λ“œ - re.MULTILINE pattern = r'^apple' text = '''apple - 첫째 μ€„μ˜ 사과 apple - λ‘˜μ§Έ μ€„μ˜ 사과 ''' # re.findall()둜 νŒ¨ν„΄ 검색 matches = re.findall(pattern, text, re.MULTILINE) if matches: for match in matches: print("νŒ¨ν„΄ λ§€μΉ˜β­• : ", match) else: print("νŒ¨ν„΄ 맀치❌")
Python
볡사
μœ„μ˜ μ˜ˆμ‹œμ—μ„œλŠ” findall() ν•¨μˆ˜μ—μ„œ 닀쀑 ν–‰ λͺ¨λ“œλ₯Ό μ•„λž˜μ™€ 같이 μ§€μ •ν•©λ‹ˆλ‹€.
re.findall(pattern, text, re.MULTILINE)
Python
볡사

닀쀑 ν–‰ λͺ¨λ“œ 적용 방법

1.
μ •κ·œ ν‘œν˜„μ‹ νŒ¨ν„΄μ— μ§€μ •ν•˜κΈ°
pattern = r'(?m)^apple'
Python
볡사
2.
ν•¨μˆ˜μ— μ˜΅μ…˜μœΌλ‘œ μ§€μ •ν•˜κΈ°
re.findall(pattern, text, re.MULTILINE)
Python
볡사

μ •κ·œ ν‘œν˜„μ‹ 기호

μ •κ·œ ν‘œν˜„μ‹ μ•ˆμ—μ„œ μ‚¬μš©λ˜λŠ” κΈ°ν˜Έλ“€μž…λ‹ˆλ‹€. 미리 μ•½μ†λœ 문자 및 기호λ₯Ό μ‚¬μš©ν•˜μ—¬ 영문, 숫자, κΈ€μž 수 등을 ν‘œν˜„ν•©λ‹ˆλ‹€.
ꡬ문
μ„€λͺ…
예제
문자
일반 λ¬ΈμžλŠ” 자체둜 λ§€μΉ˜λ©λ‹ˆλ‹€.
abcλŠ” "abc"와 맀치
.
μ–΄λ–€ 문자 ν•˜λ‚˜μ™€ λ§€μΉ˜λ©λ‹ˆλ‹€.
a.cλŠ” "abc"와 맀치
\d
숫자(digit)와 λ§€μΉ˜λ©λ‹ˆλ‹€.
\d+λŠ” "123"와 맀치
\D
μˆ«μžκ°€ μ•„λ‹Œ λ¬Έμžμ™€ λ§€μΉ˜λ©λ‹ˆλ‹€.
\D+λŠ” "abc"와 맀치
\w
문자(word character)와 λ§€μΉ˜λ©λ‹ˆλ‹€.
\w+λŠ” "hello"와 맀치
\W
λ¬Έμžκ°€ μ•„λ‹Œ λ¬Έμžμ™€ λ§€μΉ˜λ©λ‹ˆλ‹€.
\W+λŠ” "123!"와 맀치
\s
곡백 λ¬Έμžμ™€ λ§€μΉ˜λ©λ‹ˆλ‹€.
\s+λŠ” " \t\n"와 맀치
\S
곡백이 μ•„λ‹Œ λ¬Έμžμ™€ λ§€μΉ˜λ©λ‹ˆλ‹€.
\S+λŠ” "abc123"와 맀치
^
λ¬Έμžμ—΄μ˜ μ‹œμž‘κ³Ό λ§€μΉ˜λ©λ‹ˆλ‹€.
^abcλŠ” "abcdef"와 λ§€μΉ˜ν•˜μ§€ μ•ŠμŒ
$
λ¬Έμžμ—΄μ˜ 끝과 λ§€μΉ˜λ©λ‹ˆλ‹€.
xyz$λŠ” "xyz123"와 λ§€μΉ˜ν•˜μ§€ μ•ŠμŒ
[abc]
λŒ€κ΄„ν˜Έ μ•ˆμ˜ μ–΄λ–€ 문자(a, b, c)와 λ§€μΉ˜λ©λ‹ˆλ‹€.
[aeiou]λŠ” "apple"μ—μ„œ "a"와 맀치
[^abc]
λŒ€κ΄„ν˜Έ μ•ˆμ˜ μ–΄λ–€ 문자(a, b, c)λ₯Ό μ œμ™Έν•œ λ¬Έμžμ™€ λ§€μΉ˜λ©λ‹ˆλ‹€.
[^aeiou]λŠ” "apple"μ—μ„œ "p", "l" λ“±κ³Ό 맀치
[a-z]
aλΆ€ν„° zκΉŒμ§€ λ²”μœ„μ˜ λ¬Έμžμ™€ λ§€μΉ˜λ©λ‹ˆλ‹€.
[a-z]+λŠ” "hello"μ—μ„œ "hello"와 맀치
(x)
그룹을 λ‚˜νƒ€λ‚΄λ©°, xλ₯Ό λ§€μΉ˜ν•©λ‹ˆλ‹€.
(abc)+λŠ” "abcabc"와 맀치
x|y
x λ˜λŠ” y λ§€μΉ˜ν•©λ‹ˆλ‹€
x|y λŠ” β€œx” λ˜λŠ” β€œy” 와 맀치
x?
xκ°€ 0 λ˜λŠ” 1회 λ‚˜νƒ€λ‚  λ•Œ λ§€μΉ˜ν•©λ‹ˆλ‹€.
ab?cλŠ” "abc"와 "ac"와 맀치
x*
xκ°€ 0회 이상 λ‚˜νƒ€λ‚  λ•Œ λ§€μΉ˜ν•©λ‹ˆλ‹€.
ab*cλŠ” "ac", "abc", "abbc" λ“±κ³Ό 맀치
x+
xκ°€ 1회 이상 λ‚˜νƒ€λ‚  λ•Œ λ§€μΉ˜ν•©λ‹ˆλ‹€.
ab+cλŠ” "abc", "abbc" λ“±κ³Ό 맀치
x{m}
xκ°€ μ •ν™•νžˆ m회 λ‚˜νƒ€λ‚  λ•Œ λ§€μΉ˜ν•©λ‹ˆλ‹€.
a{2}λŠ” "aa"와 맀치
x{m, n}
xκ°€ μ΅œμ†Œ mνšŒμ—μ„œ μ΅œλŒ€ nνšŒκΉŒμ§€ λ‚˜νƒ€λ‚  λ•Œ λ§€μΉ˜ν•©λ‹ˆλ‹€.
a{1,3}λŠ” "a", "aa", "aaa"와 맀치
x{m,}
xκ°€ μ΅œμ†Œ m회 이상 λ‚˜νƒ€λ‚  λ•Œ λ§€μΉ˜ν•©λ‹ˆλ‹€.
a{2,}λŠ” "aa", "aaa" λ“±κ³Ό 맀치
x
y
x λ˜λŠ” y와 λ§€μΉ˜λ©λ‹ˆλ‹€.

raw string

일반적인 λ¬Έμžμ—΄κ³Ό λ‹€λ₯΄κ²Œ, μ΄μŠ€μΌ€μ΄ν”„ 문자 (λ°±μŠ¬λž˜μ‹œ(\)λ₯Ό νŠΉλ³„ν•œ 의미둜 μ‚¬μš©)λ₯Ό μžˆλŠ” κ·ΈλŒ€λ‘œ 좜λ ₯ν•˜λ„λ‘ ν•˜μ— ν•΄μ£ΌλŠ” λ¬Έμžμ—΄
일반적으둜 \(λ°±μŠ¬λž˜μ‹œ) λŠ” ν”„λ‘œκ·Έλž˜λ°μ˜ λ¬Έμžμ—΄μ—μ„œ νŠΉμ • κΈ°λŠ₯으둜 ν™œμš©λ©λ‹ˆλ‹€.
β€’
\n : κ°œν–‰
β€’
\t : νƒ­
β€’
…
μœ„μ™€ 같이 \(λ°±μŠ¬λž˜μ‹œ) 둜 μ‹œμž‘λ˜λŠ” κΈ°ν˜ΈλŠ” μ΄μŠ€μΌ€μ΄ν”„ 문자라고 λΆ€λ₯΄λ©°, νŠΉλ³„ν•œ κΈ°λŠ₯을 ν•©λ‹ˆλ‹€.
ν•˜μ§€λ§Œ, μ •κ·œ ν‘œν˜„μ‹μ—μ„œλŠ” 이λ₯Ό νŒ¨ν„΄μœΌλ‘œ μ μš©ν•˜μ—¬ μ‚¬μš©ν•΄μ•Όν•˜κΈ° λ•Œλ¬Έμ—, μ΄μŠ€μΌ€μ΄ν”„ 문자의 κΈ°λŠ₯을 λΉ„ν™œμ„±ν™” μ‹œμΌœμ•Όν•©λ‹ˆλ‹€.
λ‹€μŒκ³Ό 같이 μ΄μŠ€μΌ€μ΄ν”„ 문자의 κΈ°λŠ₯을 λΉ„ν™œμ„±ν™” μ‹œμΌœ raw string 을 μ‚¬μš©ν•©λ‹ˆλ‹€.
r'λ¬Έμžμ—΄'
Python
볡사
νŒŒμ΄μ¬μ—μ„œ μ •κ·œν‘œν˜„μ‹μ€ raw string ν˜•μ‹μœΌλ‘œ μž‘μ„±ν•©λ‹ˆλ‹€.

re λͺ¨λ“ˆμ˜ ν•¨μˆ˜

ν•¨μˆ˜
μ„€λͺ…
re.match()
λ¬Έμžμ—΄μ˜ μ‹œμž‘λΆ€ν„° νŒ¨ν„΄κ³Ό μΌμΉ˜ν•˜λŠ”μ§€ κ²€μ‚¬ν•œλ‹€.
re.search()
λ¬Έμžμ—΄ μ „μ²΄μ—μ„œ νŒ¨ν„΄κ³Ό μΌμΉ˜ν•˜λŠ” 첫 번째 μœ„μΉ˜λ₯Ό κ²€μƒ‰ν•œλ‹€.
re.findall()
λ¬Έμžμ—΄ μ „μ²΄μ—μ„œ νŒ¨ν„΄κ³Ό μΌμΉ˜ν•˜λŠ” λͺ¨λ“  뢀뢄을 μ°Ύμ•„ 리슀트둜 λ°˜ν™˜ν•œλ‹€.
re.finditer()
λ¬Έμžμ—΄ μ „μ²΄μ—μ„œ νŒ¨ν„΄κ³Ό μΌμΉ˜ν•˜λŠ” λͺ¨λ“  뢀뢄을 반볡 κ°€λŠ₯ν•œ 객체둜 λ°˜ν™˜ν•œλ‹€.
re.split()
νŒ¨ν„΄μ„ κΈ°μ€€μœΌλ‘œ λ¬Έμžμ—΄μ„ λΆ„ν• ν•˜μ—¬ 리슀트둜 λ°˜ν™˜ν•œλ‹€.
re.sub()
λ¬Έμžμ—΄μ—μ„œ νŒ¨ν„΄κ³Ό μΌμΉ˜ν•˜λŠ” 뢀뢄을 λ‹€λ₯Έ λ¬Έμžμ—΄λ‘œ λŒ€μ²΄ν•œλ‹€.
re.compile()
μ •κ·œ ν‘œν˜„μ‹ νŒ¨ν„΄μ„ μ»΄νŒŒμΌν•˜μ—¬ μž¬μ‚¬μš©ν•  수 μžˆλŠ” 객체둜 λ°˜ν™˜ν•œλ‹€.

μ˜ˆμ‹œ

β€’
아이디 ν˜•μ‹ 체크
β€’
λΉ„λ°€λ²ˆν˜Έ ν˜•μ‹ 체크
β€’
μ „ν™”λ²ˆν˜Έ ν˜•μ‹ 체크
β€’
이메일 ν˜•μ‹ 체크

아이디 ν˜•μ‹ 체크

import re def check_username(username): pattern = r'^[a-zA-Z0-9_-]{4,16}$' if re.match(pattern, username): return True else: return False # ν…ŒμŠ€νŠΈ username = "user123" if check_username(username): print("μœ νš¨ν•œ μ•„μ΄λ””μž…λ‹ˆλ‹€.") else: print("μœ νš¨ν•˜μ§€ μ•Šμ€ μ•„μ΄λ””μž…λ‹ˆλ‹€.")
Python
볡사

λΉ„λ°€λ²ˆν˜Έ ν˜•μ‹ 체크

import re def check_password(password): pattern = r'^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$' if re.match(pattern, password): return True else: return False # ν…ŒμŠ€νŠΈ password = "Password123" if check_password(password): print("μœ νš¨ν•œ λΉ„λ°€λ²ˆν˜Έμž…λ‹ˆλ‹€.") else: print("μœ νš¨ν•˜μ§€ μ•Šμ€ λΉ„λ°€λ²ˆν˜Έμž…λ‹ˆλ‹€.")
Python
볡사

μ „ν™”λ²ˆν˜Έ ν˜•μ‹ 체크

import re def check_phone_number(phone_number): pattern = r'^\d{3}-\d{3,4}-\d{4}$' if re.match(pattern, phone_number): return True else: return False # ν…ŒμŠ€νŠΈ phone_number = "010-1234-5678" if check_phone_number(phone_number): print("μœ νš¨ν•œ μ „ν™”λ²ˆν˜Έμž…λ‹ˆλ‹€.") else: print("μœ νš¨ν•˜μ§€ μ•Šμ€ μ „ν™”λ²ˆν˜Έμž…λ‹ˆλ‹€.")
Python
볡사

이메일 ν˜•μ‹ 체크

import re def check_email(email): pattern = r'^[a-zA-Z0-9+._-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$' if re.match(pattern, email): return True else: return False # ν…ŒμŠ€νŠΈ email = "example@example.com" if check_email(email): print("μœ νš¨ν•œ 이메일 μ£Όμ†Œμž…λ‹ˆλ‹€.") else: print("μœ νš¨ν•˜μ§€ μ•Šμ€ 이메일 μ£Όμ†Œμž…λ‹ˆλ‹€.")
Python
볡사