Regular Expressions
소유주 한정어
수색…
비고
NB 소유 지정자 에뮬레이션
소유량 지정자의 기본 사용
Possessive quantifiers는 많은 regex flavors에있는 또 다른 양의 한정자 클래스로서, 주어진 토큰에 대해 역 추적을 효과적으로 비활성화 할 수 있습니다. 이렇게하면 성능을 향상시킬 수있을뿐만 아니라 특정 경우 일치를 방지 할 수 있습니다.
소유량 한정자의 클래스는 다음과 같이 한정사 뒤에 +
추가하여 지연 또는 욕심쟁이 수량 자와 구별 될 수 있습니다.
한정 기호 | 욕심쟁이 | 게으른 | 소유 |
---|---|---|---|
0 이상 | * | *? | *+ |
하나 이상 | + | +? | ++ |
0 또는 1 | ? | ?? | ?+ |
예를 들어 문자열 "abc"d
에서 작동하는 ".*"
및 ".*+"
의 두 패턴을 생각해보십시오. 두 경우 모두 "
문자열의 시작 부분과 일치하지만 이후에는 두 패턴이 다른 동작 및 결과를 갖습니다.
욕심 한정 기호는 문자열의 나머지 후루룩 소리 내며 먹기 것 abc"d
.이 패턴과 일치하지 않기 때문에, 그 다음 역 추적하고 떨어질 것이다 d
정량 포함 떠나 abc"
. 이것은 여전히 패턴과 일치하지 않기 때문에 한정 기호는 "
abc
만을 포함하는 채로 남겨두고 "
이것은 패턴과 일치합니다 ( "
한정 기호가 아니라 리터럴에 의해 매치 됨). 정규식은 성공을보고합니다.
소유량 한정 기호는 문자열의 나머지 부분을 slurp하지만, 탐욕스러운 한정 기호와는 달리 되돌릴 수 없습니다. abc"d
의 내용은 나머지 일치 패턴을 허용하지 않으므로 정규 표현식이 중지되고 일치하지 않는 것으로보고합니다.
소유 양화기는 백 트랙킹을 수행하지 않기 때문에 길거나 복잡한 패턴에서 상당한 성능 향상을 가져올 수 있습니다. 그러나 한정자가 내부적으로 어떻게, 정확하게, 어떻게 작동하는지 알지 못하는 경우 위의 그림과 같이 위험 할 수 있습니다.