[reg] LookAround
목차

09. 전방탐색과 후방탐색

전후방탐색(lookaround) 언제쓸까?

전방탐색 - 앞으로 찾기

부정형 전후방탐색

09. 전방탐색과 후방탐색

2022년 9월 9일

전후방탐색(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+\bI paid $30 for 100 apples

🔑 \b는 단어 경계를 지정한다.