2017-04-06 1 views
0

regex 엔진이 후속 lookahead 문을 사용하여 식을 처리하는 방법을 이해하려고합니다. 나는 두 가지 예제 (자바 스크립트 구문)로 내 질문을 가장 잘 설명 할 수 있다고 생각한다. 내 용어의 사용이 꺼져 있으면 용서해주십시오. 내다없이Regex 후속 lookahead 문

예 :

/a(.*b)(.*c)/

이 어떤 시점에서 어떤 점에서 c 다음에하는 b, 뒤에 것을 a를 포함하는 표현식과 일치하는 것입니다. 따라서 두 번째 원자 그룹 (.*c)은 첫 번째 원자 그룹 (.*b)에 "적용됩니다". abc은이 표현식을 만족하지만 acb은 만족하지 않습니다. 내다과

예 :

/a(?=.*b)(?=.*c)/ ==이가도에 의해 어떤 점에서 다음되는 b에 의해 어느 시점에서 다음에 경우는, a을 일치합니다 /a(?=.*c)(?=.*b)/

c. 따라서 두 원자 그룹은 순서에 관계없이 a 문자에 적용됩니다. aabcacb 모두 일치합니다.

그래서 정규식 엔진이 내다 치료 (? 및 lookbehind) 그룹을 다르게 그들은 다른 그룹을 치료하는 추측 - 그들이 내다가 발생 될 때마다 후 다시 "주"표현 (이 경우 a)로 이동합니까?

도움을 주셔서 감사합니다.

+1

예. Lookaheads는 "제로 너비 어설 션"입니다. 경기가 실패 할 수도 있지만 실제로는 일치하지 않습니다. – Ryan

답변

0

둘러보기는 실제로 문자와 일치하지만 결과를 반환하는 일치도 또는 일치하지 않음을 반환합니다.

자세한 내용은 here을 참조하십시오.