🧠 codingtest/μ •κ·œν‘œν˜„μ‹(regexp)

000. μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ μ •κ·œν‘œν˜„μ‹ ν™œμš© 및 ν•œκΈ€, μœ λ‹ˆμ½”λ“œ 일치 !

awesomeyelim 2022. 9. 8. 08:44
728x90
🐜 κΈ°λ³Έ μ •κ·œν‘œν˜„μ‹ 문법이 μ—¬λŸ¬κ΅¬ν˜„μ—μ„œ λŒ€λΆ€λΆ„ λ™μΌν•˜λ‹€κ³  해도 μ •κ·œν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜λŠ” 방식은 닀름
μ •κ·œν‘œν˜„μ‹μ„ μ§€μ›ν•˜λŠ” 언어와 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—λŠ” μžμ‹ λ§Œμ˜ ν˜ΈμΆœλ°©λ²•μ΄ 있고, μ‚¬μ†Œν•œ 차이점이 μ‘΄μž¬ν•œλ‹€.

 

μžλ°”μŠ€ν¬λ¦½νŠΈ

πŸ“Œ μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œλŠ” Stringκ³Ό RegEx 객체λ₯Ό λ‹€μŒ λ©”μ„œλ“œλ‘œ μ²˜λ¦¬ν•˜μ—¬ μ •κ·œν‘œν˜„μ‹μ„ κ΅¬ν˜„

* RegEx 객체의 exec λ©”μ„œλ“œ - μΌμΉ˜ν•˜λŠ” 뢀뢄을 μ°ΎλŠ”λ‹€.
* String 객체의 match λ©”μ„œλ“œ - λ¬Έμžμ—΄μ„ μ°ΎλŠ”λ‹€.
* String 객체의 replace μ—μ„œλ“œ - μΉ˜ν™˜ λͺ…령을 μˆ˜ν–‰ν•œλ‹€.
* String 객체의 search λ©”μ„œλ“œ - λ¬Έμžμ—΄μ—μ„œ μΌμΉ˜ν•˜λŠ” 뢀뢄이 μžˆλŠ”μ§€ κ²€μ‚¬ν•œλ‹€.
* String 객체의 split λ©”μ„œλ“œ - λ¬Έμžμ—΄ ν•˜λ‚˜λ₯Ό μ—¬λŸ¬ 개둜 λ‚˜λˆˆλ‹€.
* RegEx 객체의 test λ©”μ„œλ“œ - μ£Όμ–΄μ§„ λ¬Έμžμ—΄μ΄ μΌμΉ˜ν•˜λŠ”μ§€ κ²€μ‚¬ν•œλ‹€.

 

 

❗️ λ‹€μŒκ³Ό 같은 주의 사항이 μžˆλ‹€.

  • μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” ν”Œλž˜κ·Έ(fleg)λ₯Ό μ‚¬μš©ν•΄ μ „μ—­ λŒ€μ†Œλ¬Έμžλ₯Ό ꡬ별해 κ²€μƒ‰ν•œλ‹€.(g둜 전역을 μ„€μ •, iλŠ” λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λ³„ν•˜μ§€ μ•Šκ³  μΌμΉ˜μ‹œν‚΄ -> λ‘κ°œλ₯Ό ν•©μ³μ„œ gi둜 ν‘œμ‹œν•¨)
  • λ‹€μŒκ³Ό 같은 λ³€κ²½μžκ°€ 좔가됨

 

λ³€κ²½μž/μ§€μ‹œμž μ„€λͺ…
m 닀쀑행 λ¬Έμžμ—΄μ„ μ§€μ›ν•œλ‹€.
s 단일행 λ¬Έμžμ—΄μ„ μ§€μ›ν•œλ‹€.
x μ •κ·œν‘œν˜„μ‹ λ‚΄ ν¬ν•¨λœ 곡백을 λ¬΄μ‹œν•œλ‹€.
  • μ—­μ°Έμ‘°λ₯Ό μ‚¬μš©μ‹œ
    • $'λŠ” μΌμΉ˜ν•˜λŠ” λ¬Έμžμ—΄ μ•žμ— μžˆλŠ” λ¬Έμžμ—΄μ„ λͺ¨λ‘ λ°˜ν™˜ν•œλ‹€.
    • $`λŠ” μΌμΉ˜ν•˜λŠ” λ¬Έμžμ—΄ 뒀에 μ˜€λŠ” λ¬Έμžμ—΄μ„ λͺ¨λ‘ λ°˜ν™˜ν•œλ‹€.
    • $+λŠ” λ§ˆμ§€λ§‰ ν•˜μœ„ ν‘œν˜„μ‹κ³Ό μΌμΉ˜ν•œ λ‚΄μš©μ„ λ°˜ν™˜ν•œλ‹€.
    • $&λŠ” μΌμΉ˜ν•œ λ¬Έμžμ—΄μ„ λͺ¨λ‘ λ°˜ν™˜ν•œλ‹€.

 

  • μžλ°”μŠ€ν¬λ¦½νŠΈμ—λŠ” RegExpλΌλŠ” 전역객체가 μžˆμ–΄, μ •κ·œ ν‘œν˜„μ‹μ„ μ‹€ν–‰ν•œ λ‹€μŒμ— κ΄€λ ¨λœ 정보λ₯Ό μ–»μ–΄μ˜¬ 수 μžˆλ‹€.
  • 포직슀(POSIX) 문자 ν΄λž˜μŠ€λŠ” μ§€μ›ν•˜μ§€ μ•ŠλŠ”λ‹€.
  • \A 와 \Z λŠ” μ§€μ›ν•˜μ§€ μ•ŠλŠ”λ‹€.

 

μ •κ·œν‘œν˜„μ‹κ³Ό ν•œκΈ€ 그리고 μœ λ‹ˆμ½”λ“œ

ν•œκΈ€ μΌμΉ˜μ‹œν‚€κΈ°

μ§€κΈˆκΉŒμ§€λŠ” μ˜ˆμ œμ™€ ν‘œν˜„μ‹μ΄ λͺ¨λ‘ μ˜μ–΄λ‘œλ§Œ λ˜μ–΄μžˆμ—ˆλ‹€. κ·Έλ ‡λ‹€λ©΄, μ •κ·œν‘œν˜„μ‹μ—μ„œ ν•œκΈ€μ„ μ‚¬μš©ν•˜λ €λ©΄ μ–΄λ–»κ²Œ ν•΄μ•Όν• κΉŒ ?

짚고 λ„˜μ–΄κ°€μ•Όν•  λΆ€λΆ„

πŸ“Œ ν•œκΈ€μ€ \w와 μΌμΉ˜ν•˜μ§€ μ•ŠλŠ”λ‹€.(\w : [A-Za-z0-9])

 

 

μ˜ˆμ‹œ 비ꡐ

- μ˜ˆμ‹œ
κ΅­μ–΄:수
μ˜μ–΄:수
μˆ˜ν•™:수
미술:μ–‘
체윑:미
 
μ •κ·œμ‹
(?<=[^κ°€-νž‡])(수|우|λ―Έ|μ–‘|κ°€)(?=[^κ°€-νž‡])
κ²°κ³Ό
κ΅­μ–΄:수
μ˜μ–΄:수
μˆ˜ν•™:수
미술:μ–‘
체윑:미

 

πŸ“Œ [^κ°€-νž‡] νŒ¨ν„΄μ„ μ‚΄νŽ΄λ³΄λ©΄ κ°€λŠ” ν•œκΈ€ 문자 μ§‘ν•©μ—μ„œ κ°€μž₯ 첫번째 문자이고, νž£μ€ κ°€μž₯ λ§ˆμ§€λ§‰ λ¬Έμžμ΄λ‹€.([A-Z]νŒ¨ν„΄κ³Ό λ§ˆμ°¬κ°€μ§€λ‘œ κ°€λΆ€ν„° 힣문자 사이에 μžˆλŠ” λͺ¨λ“  문자λ₯Ό λ‚˜νƒ€λƒ„. 즉, λͺ¨λ“  ν•œκΈ€λ¬Έμžμ™€ 일치)
πŸ“Œ κ·ΈλŸ¬λ―€λ‘œ [^κ°€-νž‡] νŒ¨ν„΄μ€ ν•œκΈ€μ΄ μ•„λ‹Œ λ¬Έμžμ™€ λͺ¨λ‘ μΌμΉ˜ν•¨

 

 

 

 

μœ λ‹ˆμ½”λ“œ μΌμΉ˜μ‹œν‚€κΈ°

- μœ λ‹ˆμ½”λ“œμ—λŠ” ν•œκΈ€λΏλ§Œ μ•„λ‹Œ λ‹€μ–‘ν•œ 언어와 κΈ°ν˜Έκ°€ ν¬ν•¨λ˜μ–΄ 있음

🐜 μ •κ·œ ν‘œν˜„μ‹μœΌλ‘œ μΌμΉ˜μ‹œν‚€κΈ° μœ„ν•΄μ„  μœ λ‹ˆμ½”λ“œ 번호(Unicode code point)λ₯Ό μ‚¬μš©ν•˜λŠ” 방법을 μ•Œμ•„λ³΄μž !

- μœ λ‹ˆμ½”λ“œλŠ” λ¬Έμžλ§ˆλ‹€ μˆœμ„œλŒ€λ‘œ 번호λ₯Ό ν• λ‹Ήν•œλ‹€. 이 번호(code point)λ₯Ό 직접 μ‚¬μš©ν•΄ μœ λ‹ˆμ½”λ“œ λ¬Έμžμ™€ μΌμΉ˜μ‹œν‚¬μˆ˜ μžˆλ‹€.

 

μ—μ‹œ 비ꡐ

- μ˜ˆμ‹œ
Copyright © 2022 μΈμ‚¬μ΄νŠΈ
 
μ •κ·œμ‹
\u00a9
κ²°κ³Ό
Copyright © 2022 μΈμ‚¬μ΄νŠΈ

 

πŸ“Œ λ¬Έμžμ— ν• λ‹Ήλœ 번호 00a9λ₯Ό 톡해 © λ¬Έμžμ™€ μΌμΉ˜ν–ˆλ‹€.
❗️ νŒŒμ΄μ¬μ—μ„œλŠ” ν•΄λ‹Ή μ •κ·œ ν‘œν˜„ λ¬Έμžμ—΄ μ•žμ— \u00a9 와 같이 uλ₯Ό λΆ™μ—¬ μœ λ‹ˆμ½”λ“œμž„μ„ λ‚˜νƒ€λ‚΄μ•Όν•œλ‹€

πŸ”‘ μ˜ˆμ œμ™€ 같은 ν˜•μ‹μ˜ μœ λ‹ˆμ½”λ“œ 번호(Unicode code point)λ₯Ό ν†΅ν•œ μ •κ·œν‘œν˜„μ‹ μΌμΉ˜λŠ” μžλ°”, μžλ°”μŠ€ν¬λ¦½νŠΈ, λ‹·λ„·, νŒŒμ΄μ¬λ§Œμ—μ„œ 지원.