본문 바로가기
프로그래밍 놀이터/Tips

[regex] Possessive quantifier 에 대해 알아보자.

by 돼지왕왕돼지 2020. 2. 29.

[regex] Possessive quantifier 에 대해 알아보자.



https://chortle.ccsu.edu/FiniteAutomata/Section09/sect09_21.html


-

regex 의 quantifier 는 greedy(by default), reluctant(or lazy), possessive 중 하나이다.

possessive 는 다음과 같이 일한다.


1. first unmatched char 부터 match 를 시작한다.

2. 왼쪽부터 오른쪽으로 매칭 시작한다.

3. 가능한 많이 matching 시킨다.

4. char 가 matching 되면 quantifier 를 유지하고, 나머지 regex 의 matching 을 무시한다. (back-tracking 하지 않는다.)



-

quantifier 에 + 사인을 주면 possessive 가 된다.

X++ 는 X 를 한개이상 match 시키고, match 된 것을 절대 포기하지 않는다.

예를 들어 X++[A-Z]+ 가 있을 때, 

string XXXXZ 에 대해서는 XXXX 가 X++ 에 매칭되고, [A-Z]+ 에는 Z 가 매칭된다.

string XXXX 에 대해서는 X++ 가 XXXX 를 다 가져갔기 때문에 이 녀석은 매칭되지 않는다. (back-tracking 하지 않기 때문이다. greedy 였다면  X+ 에 XXX 가 매칭되고, [A-Z]+ 에 마지막 X 가 매칭된다. 






댓글0