regex 엔진이 후속 lookahead 문을 사용하여 식을 처리하는 방법을 이해하려고합니다. 나는 두 가지 예제 (자바 스크립트 구문)로 내 질문을 가장 잘 설명 할 수 있다고 생각한다. 내 용어의 사용이 꺼져 있으면 용서해주십시오. 내다없이Regex 후속 lookahead 문
예 :
/a(.*b)(.*c)/
이 어떤 시점에서 어떤 점에서 c
다음에하는 b
, 뒤에 것을 a
를 포함하는 표현식과 일치하는 것입니다. 따라서 두 번째 원자 그룹 (.*c)
은 첫 번째 원자 그룹 (.*b)
에 "적용됩니다". abc
은이 표현식을 만족하지만 acb
은 만족하지 않습니다. 내다과
예 :
/a(?=.*b)(?=.*c)/
==이가도에 의해 어떤 점에서 다음되는 b
및에 의해 어느 시점에서 다음에 경우는, a
을 일치합니다 /a(?=.*c)(?=.*b)/
c
. 따라서 두 원자 그룹은 순서에 관계없이 a
문자에 적용됩니다. a
은 abc
과 acb
모두 일치합니다.
그래서 정규식 엔진이 내다 치료 (? 및 lookbehind) 그룹을 다르게 그들은 다른 그룹을 치료하는 추측 - 그들이 내다가 발생 될 때마다 후 다시 "주"표현 (이 경우 a
)로 이동합니까?
도움을 주셔서 감사합니다.
예. Lookaheads는 "제로 너비 어설 션"입니다. 경기가 실패 할 수도 있지만 실제로는 일치하지 않습니다. – Ryan