λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Javascript

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

by oranssy 2022. 8. 17.
728x90
λ°˜μ‘ν˜•

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


01. μ •κ·œ ν‘œν˜„μ‹ (regex)μ΄λž€?

μ •κ·œ ν‘œν˜„μ‹ (Regular Expression)은 μ–΄λ– ν•œ ν…μŠ€νŠΈ λ‚΄μ—μ„œ νŠΉμ •ν•œ κ·œμΉ™μ„ 가진 λ¬Έμžμ—΄(νŒ¨ν„΄)을 κ²€μƒ‰ν•˜κ³  μΉ˜ν™˜ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” ν˜•μ‹ μ–Έμ–΄λ₯Ό λ§ν•©λ‹ˆλ‹€.
μ •κ·œ ν‘œν˜„μ‹μ€ 검색 엔진, μ›Œλ“œ ν”„λ‘œμ„Έμ„œμ™€ λ¬Έμ„œ νŽΈμ§‘κΈ°μ˜ μ°Ύμ•„ λ°”κΎΈκΈ° λŒ€ν™”μƒμž, 그리고 sed, AWK와 같은 문자 처리 μœ ν‹Έλ¦¬ν‹°, μ–΄νœ˜ 뢄석에 μ‚¬μš©λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

[1] μ •κ·œ ν‘œν˜„μ‹μ˜ ν˜•νƒœ

/ regex / i
/ μŠ¬λž˜μ‹œ / μ•ˆμ— 찾고자 ν•˜λŠ” νŒ¨ν„΄ regex 을 μž‘μ„±ν•©λ‹ˆλ‹€.
μ–΄λ–€ μ˜΅μ…˜μ— μ˜ν•΄μ„œ 검색할 것인지λ₯Ό λ‚˜νƒ€λ‚΄λŠ” ν”Œλž˜κ·Έ i λ₯Ό ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

   ___ μ°Έκ³ ν•˜κΈ° ___
  `1   ν”Œλž˜κ·Έ(Expression Flags)의 μ’…λ₯˜λŠ” global, multiline, case insensitive, single line, unicode, sticky κ°€ μžˆμŠ΅λ‹ˆλ‹€.
       μ—¬κΈ°μ—μ„œλŠ” λ§€μΉ­λ˜λŠ” λ‹€μˆ˜μ˜ 결과값을 κΈ°μ–΅ν•˜λŠ” global κ³Ό multiline 을 μ΄μš©ν•©λ‹ˆλ‹€. β˜› /regex/gm

[2] μ •κ·œ ν‘œν˜„μ‹μ˜ μ£Όμš” νŒ¨ν„΄

μ•„λž˜μ˜ νŒ¨ν„΄μ€ 보기 νŽΈν•˜λ„λ‘ 띄어쓰기λ₯Ό ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

νŒ¨ν„΄ μ„€λͺ…
/ Hi / Hi λ¬Έμžμ—΄μ„ κ²€μƒ‰ν•©λ‹ˆλ‹€.
/ Hi | Hello / Hi λ˜λŠ” Hello λ¬Έμžμ—΄μ„ κ²€μƒ‰ν•©λ‹ˆλ‹€. ( ' | ' : λ˜λŠ” )
/ ( Hi | Hello ) / ( Hi λ˜λŠ” Hello ) λ¬Έμžμ—΄μ„ κ²€μƒ‰ν•©λ‹ˆλ‹€.
   β˜› (κ·Έλ£Ή1) 지정됨
/ ( Hi | Hello ) | ( And ) / ( Hi λ˜λŠ” Hello ) λ˜λŠ” ( And )을 κ²€μƒ‰ν•©λ‹ˆλ‹€.
   β˜› (κ·Έλ£Ή1) κ³Ό (κ·Έλ£Ή2) 지정됨
/ gr ( a | e ) y / gr 둜 μ‹œμž‘ν•˜κ³  ( a λ˜λŠ” e ) κ°€ λ“€μ–΄κ°€λ©°, y 둜 λλ‚˜λŠ” λ¬Έμžμ—΄μ„ κ²€μƒ‰ν•©λ‹ˆλ‹€.
   β˜› grey 와 gray λ¬Έμžμ—΄μ„ 찾음, (κ·Έλ£Ή1) 지정됨
/ gr ( ? : a | e ) y / gr 둜 μ‹œμž‘ν•˜κ³  ( a λ˜λŠ” e ) κ°€ λ“€μ–΄κ°€λ©°, y 둜 λλ‚˜λŠ” λ¬Έμžμ—΄μ„ κ²€μƒ‰ν•©λ‹ˆλ‹€.
   β˜› gray 와 grey λ¬Έμžμ—΄μ„ μ°Ύμ§€λ§Œ, (κ·Έλ£Ή) 을 μ§€μ •ν•˜μ§€ μ•ŠμŒ ( ' ? : ' κΈ°μ–΅ν•˜μ§€ μ•ŠμŒ )
/ gr [aed] y / [ ] λŒ€κ΄„ν˜Έ μ•ˆμ˜ 문자λ₯Ό ν•˜λ‚˜μ”© μ μš©ν•˜μ—¬ κ²€μƒ‰ν•©λ‹ˆλ‹€.
gr 둜 μ‹œμž‘ν•˜κ³  [ a λ˜λŠ” e λ˜λŠ” d ] κ°€ λ“€μ–΄κ°€λ©°, y 둜 λλ‚˜λŠ” λ¬Έμžμ—΄μ„ κ²€μƒ‰ν•©λ‹ˆλ‹€.
' | λ˜λŠ” ' 을 많이 μ‚¬μš©ν•˜μ—¬ 그룹을 지정할 수 있고, [ ] λŒ€κ΄„ν˜Έλ₯Ό μ‚¬μš©ν•  μˆ˜λ„ 있음
   β˜› gray, grey, grdy λ¬Έμžμ—΄μ„ 찾음, 참고둜 / gr [ abcdef ] y / = / gr [ a-f ] y / 같은 ν‘œν˜„
[ a-zA-Z0-9 ] μ†Œλ¬Έμž aλΆ€ν„° zκΉŒμ§€, λŒ€λ¬Έμž AλΆ€ν„° ZκΉŒμ§€, 숫자 0λΆ€ν„° 9κΉŒμ§€λ₯Ό λͺ¨λ‘ κ²€μƒ‰ν•©λ‹ˆλ‹€.
[ ^ a-zA-Z0-9 ] [ ^ λŒ€κ΄„ν˜Έ μ•ˆμ˜ 문자 ] λ₯Ό μ œμ™Έν•œ λ¬Έμžμ—΄μ„ κ²€μƒ‰ν•©λ‹ˆλ‹€.
μ†Œλ¬Έμž aλΆ€ν„° zκΉŒμ§€, λŒ€λ¬Έμž AλΆ€ν„° ZκΉŒμ§€, 숫자 0λΆ€ν„° 9κΉŒμ§€λ₯Ό λͺ¨λ‘ μ œμ™Έν•œ λ‚˜λ¨Έμ§€λ₯Ό κ²€μƒ‰ν•©λ‹ˆλ‹€.
/ gra ? y / ? μ•žμ˜ λ¬Έμžκ°€ μ—†κ±°λ‚˜ (0) μžˆκ±°λ‚˜ (1)
   β˜› gray, gry λ¬Έμžμ—΄μ„ 찾음
/ gra * y / * μ•žμ˜ λ¬Έμžκ°€ μ—†κ±°λ‚˜ (0) μžˆκ±°λ‚˜ (1) λ§Žκ±°λ‚˜
   β˜› gry, gray, graay, graaay, ... λ¬Έμžμ—΄μ„ 찾음
/ gra + y / + μ•žμ˜ λ¬Έμžκ°€ μžˆκ±°λ‚˜ (1) λ§Žκ±°λ‚˜
   β˜› gray, graay, graaay, ... λ¬Έμžμ—΄μ„ 찾음
/ gra {2} y / { } μ•žμ˜ λ¬Έμžκ°€ { μ •ν™•ν•œ μˆ˜λŸ‰ } 만큼 λ‚˜μ˜€λŠ” λ¬Έμžμ—΄μ„ μ°ΎμŠ΅λ‹ˆλ‹€.
   β˜› graay
/ gra {2,3} y / { } μ•žμ˜ λ¬Έμžκ°€ { μ΅œμ†Œ, μ΅œλŒ€ } 수만큼 λ‚˜μ˜€λŠ” λ¬Έμžμ—΄μ„ μ°ΎμŠ΅λ‹ˆλ‹€. μ΅œλŒ€ 없이 { μ΅œμ†Œ, } 만 지정 κ°€λŠ₯ν•©λ‹ˆλ‹€.
   β˜› graay, graaay
/ \b at / ' \b ' λŠ” λ‹¨μ–΄μ˜ μ‹œμž‘λΆ€λΆ„κ³Ό 끝뢀뢄에 μœ„μΉ˜ν•œ λ¬Έμžμ—΄μ„ κ²€μƒ‰ν•©λ‹ˆλ‹€.
' \b ' λ₯Ό 찾고자 ν•˜λŠ” λ¬Έμžμ—΄μ˜ μ•žμͺ½μ— 적고, 단어 μ‹œμž‘λΆ€λΆ„μ˜ at λ¬Έμžμ—΄μ„ μ°ΎμŠ΅λ‹ˆλ‹€.
   β˜› 'at', 'at'tention, 'at'tribute
/ at \b / ' \b ' λ₯Ό 찾고자 ν•˜λŠ” λ¬Έμžμ—΄μ˜ μ•žμͺ½μ— 적고, 단어 λλΆ€λΆ„μ˜ at λ¬Έμžμ—΄μ„ μ°ΎμŠ΅λ‹ˆλ‹€.
   β˜› flo'at', gre'at', repe'at'
/ at \B / \B λ₯Ό μ‚¬μš©ν•˜μ—¬ λ‹¨μ–΄μ˜ 끝뢀뢄에 쓰이지 μ•ŠλŠ” at λ¬Έμžμ—΄μ„ λͺ¨λ‘ μ°ΎμŠ΅λ‹ˆλ‹€.
   β˜› 'at', 'at'tention, 'at'tribute, m'at'e, c'at's
/ ^ sh / λ¬Έμž₯의 μ‹œμž‘λΆ€λΆ„μ— μœ„μΉ˜ν•œ sh λ¬Έμžμ—΄μ„ μ°ΎμŠ΅λ‹ˆλ‹€.
/ sh $ / λ¬Έμž₯의 끝뢀뢄에 μœ„μΉ˜ν•œ sh λ¬Έμžμ—΄μ„ μ°ΎμŠ΅λ‹ˆλ‹€.
/ . / ν•˜λ‚˜μ˜ λ¬Έμžμ—΄(λͺ¨λ“  λ¬Έμžμ—΄)을 κ²€μƒ‰ν•©λ‹ˆλ‹€.
'λ§ˆμΉ¨ν‘œ'λ₯Ό 찾고자 ν•  경우, / \ [ . ] { . } /    β˜› \ 둜 μ°ΎκΈ° (특수문자 μ°ΎκΈ°)
/ \d / 숫자λ₯Ό κ²€μƒ‰ν•©λ‹ˆλ‹€.
/ \D / 숫자λ₯Ό μ œμ™Έν•œ λ‚˜λ¨Έμ§€λ₯Ό κ²€μƒ‰ν•©λ‹ˆλ‹€.
/ \w / μ•ŒνŒŒλ²³, 숫자, _λ₯Ό κ²€μƒ‰ν•©λ‹ˆλ‹€.
/ \W / μ•ŒνŒŒλ²³, 숫자, _λ₯Ό μ œμ™Έν•œ λ‚˜λ¨Έμ§€λ₯Ό κ²€μƒ‰ν•©λ‹ˆλ‹€.
/ \s / ν•˜λ‚˜μ˜ 곡백을 κ²€μƒ‰ν•©λ‹ˆλ‹€.
/ \S / 곡백을 μ œμ™Έν•˜κ³  κ²€μƒ‰ν•©λ‹ˆλ‹€.

[3] μ •κ·œ ν‘œν˜„μ‹μœΌλ‘œ 찾아보기

# ν…μŠ€νŠΈ μ€‘μ—μ„œ μ „ν™”λ²ˆν˜Έλ§Œ μ°ΎκΈ°

111-222-3333
212 242 3535
01.544.3930
241*203*3524

   β˜› /\d\d\d-\d\d\d-\d\d\d\d/
   β˜› /\d{2,3}[- .*]\d{3}-\d{4}

# ν…μŠ€νŠΈ μ€‘μ—μ„œ μ΄λ©”μΌλ§Œ μ°ΎκΈ°

abcde.fghij.klmno@gmail.net
edcba@naver.net
olleh@daum.com

   β˜› /[a-zA-Z0-9._+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9.]+/

728x90
λ°˜μ‘ν˜•

λŒ“κΈ€