[.net] RegEx : 가능한 가장 작은 일치 또는 욕심없는 일치

RegEx (.NET 버전)에 가장 큰 것 대신 가장 작은 유효한 일치를 얻으려면 어떻게해야합니까?



답변

같은 정규 표현식의 경우 .*.+, APPEND 물음표 ( .*?또는 .+?) 가능한 한 적은 수의 문자로 일치합니다. 섹션을 선택적으로 일치 (?:blah)?하지만 절대적으로 필요한 경우가 아니면 일치하지 않으려면 (?:blah){0,1}?. 반복되는 일치 ( {n,}또는 {n,m}구문 사용)의 경우 물음표를 추가하여 가능한 한 적게 일치 {3,}?시키 십시오 (예 : 또는 {5,7}?).

정규식 한정자 에 대한 문서 도 도움이 될 수 있습니다.


답변

탐욕스럽지 않은 연산자 ?. 이렇게 :

.*?


답변

탐욕스럽지 않은 연산자는 가능한 가장 짧은 일치를 의미하지 않습니다.

Abcabk

a.+?k 마지막 세 개의 기호 대신 전체 문자열 (이 예에서)과 일치합니다.

대신 가능한 가장 작은 일치를 찾고 싶습니다.

그것은 a모든 일치를 계속 허용하는 ‘ ‘에 대한 마지막 가능한 일치입니다 k.

그렇게하는 유일한 방법은 다음과 같은 표현식을 사용하는 것입니다.

a[^a]+?k


답변