-
01. Telephone Number
[DF905] Regular Expression (์ ๊ท ํํ์) : ๋คํ, ๋ฐ์ดํฐ์ฌ์ด์ธ์ค ์ฐ์ต๋ฌธ์
๐ฅ ๋ฌธ์ ์ค๋ช ์ค๋ฌด์์ ํ์์ ์ผ๋ก ์ฐ์ด๋ ์ ๊ทํํ์์ ๊ธฐ์ด๋ฅผ ๋ ๊ฐ์ง ์ฌ๋ก๋ก ์ตํ๋ค.์์ฐ์ด ์ฒ๋ฆฌ ๊ด๋ จ ์ง๊ตฐ์ ์ฝ๋ฉ ํ ์คํธ์์๋ ์ ๊ทํํ์ ๋ฌธ์ ๋ ์์ฃผ ๋ฑ์ฅํ๋ค. ๐ฅ ์ถ์ฒ ๋์์์ฐ์ด ์ฒ๋ฆฌ๋ฅผ ๊ณต๋ถํ๊ณ ์ ํ๋ ์ฌ๋.์์ฐ์ด ์ฒ๋ฆฌ๋ฅผ ๊ณต๋ถํ๊ณ ์์ง๋ง ์ ์ฒ๋ฆฌ ์ฐ์ต์ด ๋ถ์กฑํ ์ฌ๋.์ ๊ทํํ์๋ง ๋์ค๋ฉด ์์ ์ด ์๋ ์ฌ๋.ํ์ด์ฌ์ ์ด์ฉํ ์ ๊ทํํ์ ์ฐ์ต์ ํ๊ณ ์ถ์ ์ฌ๋.๐ฅ ํ์ต ๋ชฉํ์ ๊ท ํํ์์ผ๋ก ๋ฐ์ดํฐ์ ๋ค์ํ ๊ท์น์ ํํํ ์ ์๋ค.๋ฐ์ดํฐ๋ฅผ ์ ๊ท ํํ์์ ์ด์ฉํด์ ์ ์ฒ๋ฆฌ
www.dafit.me
์ 3๊ฐ์ ํฌ๋งท์ ๋ง๋ ์ ํ๋ฒํธ๋ฅผ REPLACEPHONE ์ผ๋ก ์นํํด์ผ ํ๋ ๋ฌธ์ ๋ค.
import re
์ผ๋จ ์ ๊ท ํํ์์ ๋ง๋ค๊ธฐ ์ํด, re๋ฅผ import ํด์ค๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ๋ค์, ๊ฐ๊ฐ ์๋ด, ์์ธ, ๊ธฐํ ์ง์ญ์ ํจํด์ ๋ง๋ค์ด ์ฃผ์ด์ผ ํ๋ค. ๋จผ์ ์๋ด๋ฅผ ๋ณด์.
(N)XXX-XXXX
N์ 3๋ถํฐ 9๊น์ง์ ์ซ์์ด๊ณ X๋ 0๋ถํฐ 9๊น์ง์ ์ซ์์ธ๋ฐ, ์ฒซ ๋ฒ์งธ ์๋ฆฌ๊ฐ ์์ด๋ ๋๊ณ ์์ด๋ ๋๋ค.
sinae = re.compile(r'[3-9]?\d{3}[-]\d{4}$')
๊ทธ๋์ ๋ฒ์๊ฐ 3-9์ธ N์ [3-9]๋ก ๋ํ๋ด์๊ณ , ์์ด๋ ๋๊ณ ์์ด๋ ๋๋๊น ? ๋ฅผ ๋ถ์ฌ ์ฃผ์๋ค.
๋ค์ X๋ค์ ๋ฒ์๊ฐ 0-9๋ผ์ ์ซ์๋ฅผ ๋ํ๋ด๋ \d๋ฅผ ์ด์ฉํ๊ณ , ๋ฌด์กฐ๊ฑด 3์๋ฆฌ, 4์๋ฆฌ ์ฌ์ผ ํ๋๊น { }๋ก ๋ฐ๋ณต ๋ฒ์๋ฅผ ์ ํด ์ฃผ์๋ค. ๋ํ, ๋ฐฑ์ฌ๋์ฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ ๋ฌธ์์ด ์์ r์ ํ๊ธฐํด ์ฃผ์๋ค.
๊ทธ๋ฆฌ๊ณ 7์๋ฆฌ, ํน์ 8์๋ฆฌ๊ฐ ๋ง์ง๋ง์ด๋ผ๋ ๊ฒ์ ๋ํ๋ด๋ ค๊ณ $๋ฅผ ์ฌ์ฉํด ๋ฌธ์์ด์ ๋์์ ํ๊ธฐํ๋ค.
๋ค์์ ์์ธ์ด๋ค.
02-(N)XXX-XXXX
seoul = re.compile(r'02[-][3-9]?\d{3}[-]\d{4}$')
'02-'๋ ๋ฌด์กฐ๊ฑด ๋์์ผ ํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก 02๋ฅผ ๊ทธ๋ฅ ๋ฃ์ด ์ฃผ์๋ค. ๋ท๋ถ๋ถ์ ์๋ด์ ๊ฐ๋ค.
๋ค์์ ๊ธฐํ ์ง์ญ์ด๋ค.
0NX-(N)XXX-XXXX
other = re.compile('0[3-9]\d[-][3-9]?\d{3}[-]\d{4}$')
์์ 0NX๋ ๋ฌด์กฐ๊ฑด ํ ๋ฒ์ฉ ๋์์ผ ํ๋ฏ๋ก 0 [3-9] \d๋ก ๋์์ผ ํจ์ ์๋ ค์ฃผ์๋ค.
ํ ์คํธ๋ฅผ ์ํ ๋ฐ์ดํฐ ์ ์ ๋ง๋ค์๋ค.
data = ["210-7979", '02-210-2929', '02 290-2100', '031-210-2929','021-310-2929', '210-999', '2109-999', '030-3333-3333']๊ทธ๋ฆฌ๊ณ ํํฐ์ ๊ฑธ๋ฆฐ๋ค๋ฉด REPLACEPHONE์ผ๋ก ์นํํ๊ณ , ์๋๋ฉด ๊ทธ๋ฅ ์ถ๋ ฅ๋๋๋ก ํ๋ค.
for i in data:if sinae.match(i) or seoul.match(i) or other.match(i):print("REPLACEPHONE")else:print(i)์ ์ฒด ์ฝ๋๋ค.
import resinae = re.compile(r'[3-9]?\d{3}[-]\d{4}$')seoul = re.compile('02[-][3-9]?\d{3}[-]\d{4}$')other = re.compile('0[3-9]\d[-][3-9]?\d{3}[-]\d{4}$')data = ["210-7979", '02-210-2929', '02 290-2100', '031-210-2929','021-310-2929', '210-999', '2109-999', '030-3333-3333']for i in data:if sinae.match(i) or seoul.match(i) or other.match(i):print("REPLACEPHONE")else:print(i)์ ์ถ๋ ฅ ๋๋ค.
ํด๋์๊ธฐ๋ก์ ๋จ๊ธฐ๋ ค๊ณ ๋ ธ๋ ฅํฉ๋๋ค
'๐STUDY > ๐๋คํ (dafit.me)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DF905] 02. YYYY-MM-DD (0) 2020.02.26 [DF913] 10. ์ ํ๋ฒํธ ์ ์ฒ๋ฆฌ (0) 2020.02.25 [DF913] 09. ๋ฌธ์์ด ํํฐ (0) 2020.02.11 [DF913] 08. ์ํ๋ฒณ ๋์ฝ๋ฉ (0) 2020.02.11 [DF913] 07. ๋ณ์ฐ๊ธฐ ํผํฉ (0) 2020.02.11