ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 09. 전방탐색과 후방탐색
    🧠 codingtest/μ •κ·œν‘œν˜„μ‹(regexp) 2022. 9. 6. 08:51
    728x90

    전후방탐색(lookaround) μ–Έμ œμ“ΈκΉŒ?

    ν…μŠ€νŠΈ 자체λ₯Ό μ°ΎκΈ° λ³΄λ‹€λŠ” μ–΄λ””μ„œ ν…μŠ€νŠΈλ₯Ό μ°Ύμ„λ•Œ ν‘œμ‹œν•˜λŠ” ν‘œν˜„μ‹μ„ μ“°κ³  μ‹Άμ„λ•Œ μ‚¬μš©
    
    πŸ“Œ 전방탐색은 λͺ¨λ“  μ£Όμš” μ •κ·œν‘œν˜„μ‹μ—μ„œ μ§€μ›ν•˜μ§€λ§Œ 후방탐색을 κ΄‘λ²”μœ„ν•˜κ²Œ μ§€μ›ν•˜μ§€ x (μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 지원 x)
    ν‘œν˜„μ‹ μ„€λͺ…
    ?= 전방탐색(lookahead)
    ?<= 후방탐색(lookbehind)

     

    전방탐색 - μ•žμœΌλ‘œ μ°ΎκΈ°

    - ν•˜μœ„ν‘œν˜„μ‹κ³Ό 같은 ν˜•μ‹μœΌλ‘œ μž‘μ„±
    - 전방탐색(lookahead) νŒ¨ν„΄μ€ 일치 μ˜μ—­μ„ λ°œκ²¬ν•΄λ„ κ·Έ 값을 λ°˜ν™˜ν•˜μ§€ μ•ŠλŠ” νŒ¨ν„΄μ„ 말함

     

     

    URLμ—μ„œ ν”„λ‘œν† μ½œμ˜ μœ„μΉ˜ μΆ”μΆœν•˜κΈ°(전방탐색)

    - μ˜ˆμ‹œ
    http://www.google.com
    λŒ€μž…μ‹ κ²°κ³Ό
    .+(?=:) http://www.google.com

    πŸ“Œ μ—¬κΈ°μ„œ 콜둠(:)이 μΌμΉ˜ν•˜μ§€ μ•ŠλŠ” 것을 λˆˆμ—¬κ²¨ 봐야함(μ†ŒλΉ„ν•˜μ§€ μ•ŠλŠ”λ‹€)
    πŸ“Œ μ‹€μ œλ‘œ κ²°κ³Όλ₯Ό λ°˜ν™˜ν•˜μ§€λ§Œ λ°˜ν™˜λœ 문자의 길이가 항상 0 μž„ -> 전방탐색을 ν”νžˆ 제둜폭(zero-width) 으둜 λΆ€λ₯΄κΈ°λ„ 함
    πŸ“Œ λͺ¨λ“  ν•˜μœ„ ν‘œν˜„μ‹ μ•žμͺ½μ— λ‹¨μˆœνžˆ ?=λ₯Ό λΆ™μ΄κΈ°λ§Œ ν•˜λ©΄λ¨
    πŸ“Œ 후방탐색 은 전방탐색과 μ‚¬μš© 방법이 κ°™λ‹€.

     

     

     

     

    λ‹¬λŸ¬($)κ°’ μ œμ™Έν•˜κ³  μ°ΎκΈ°(후방탐색)

    - μ˜ˆμ‹œ
    ABC01 : $23.45
    λŒ€μž…μ‹ κ²°κ³Ό
    (?<=\$)[0-9.]+ ABC01 : $23.45

    πŸ“Œ 전방탐색 νŒ¨ν„΄μ€ λ§ˆμΉ¨ν‘œ(.) & λ”ν•˜κΈ°(+) λ₯Ό ν¬ν•¨ν•˜μ—¬ ν…μŠ€νŠΈμ˜ 길이λ₯Ό λ‹€μ–‘ν•˜κ²Œ 일치 μ‹œν‚¬μˆ˜ 있음(λ§€μš°λ™μ )
    πŸ“Œ 후방탐색 νŒ¨ν„΄μ€ 보톡 μΌμΉ˜μ‹œν‚¬ ν…μŠ€νŠΈμ˜ 길이λ₯Ό 고정해야함

     

     

     

     

     

    λΆ€μ •ν˜• 전후방탐색

    μ’…λ₯˜ μ„€λͺ…
    (?=) κΈμ •ν˜• 전방탐색
    (?!) λΆ€μ •ν˜• 전방탐색
    (?<=) κΈμ •ν˜• 후방탐색
    (?<!) λΆ€μ •ν˜• 후방탐색

    λ‹¬λŸ¬($)λ’€ μˆ«μžκ°€ μ•„λ‹Œ 숫자 μ°ΎκΈ°(λΆ€μ •ν˜• 후방탐색)

    - μ˜ˆμ‹œ
    I paid $30 for 100 apples
       
    λŒ€μž…μ‹ κ²°κ³Ό
    \b(?<!$)\d+\b I paid $30 for 100 apples

    πŸ”‘ \bλŠ” 단어 경계λ₯Ό μ§€μ •ν•œλ‹€.

    λŒ“κΈ€