답변:
같은 정규 표현식의 경우 .*
나 .+
, APPEND 물음표 ( .*?
또는 .+?
) 가능한 한 적은 수의 문자로 일치합니다. 섹션을 선택적으로 일치 (?:blah)?
하지만 절대적으로 필요한 경우가 아니면 일치하지 않으려면 (?:blah){0,1}?
. 반복되는 일치 ( {n,}
또는 {n,m}
구문 사용)의 경우 물음표를 추가하여 가능한 한 적게 일치 {3,}?
시키 십시오 (예 : 또는 {5,7}?
).
정규식 한정자 에 대한 문서 도 도움이 될 수 있습니다.
탐욕스럽지 않은 연산자는 가능한 가장 짧은 일치를 의미하지 않습니다.
Abcabk
a.+?k
마지막 세 개의 기호 대신 전체 문자열 (이 예에서)과 일치합니다.
대신 가능한 가장 작은 일치를 찾고 싶습니다.
그것은 a
모든 일치를 계속 허용하는 ' '에 대한 마지막 가능한 일치입니다 k
.
그렇게하는 유일한 방법은 다음과 같은 표현식을 사용하는 것입니다.
a[^a]+?k
cab
. 내 입력이 caaacab
있고 검색 a.*?b
하면 짧은 일치 대신 전체 문자열이 반환됩니다. 에서 거꾸로 검색하려면 b
어떻게 해야 합니까?
START[^START]*?END
(START 및 END가 시작 및 끝 문자 정규식입니다)입니다. 그것은 본질적으로 "(가)의 사이에 문자를 다시 시작 포함되지 않습니다 처음부터 끝까지 일치 아무것도"의미
abcabk
및a.+?k
, RegEx는 전체 문자열과 일치합니다.