탐욕 모드 :
달리 명시되지 않는 한 수량 표시기는 탐욕 모드로 기본적으로 기본적입니다. 탐욕스러운 패턴의 표현은 할 수 없을 때까지 계속 일치합니다. 표현식 일치 결과가 예상되는 결과와 일치하지 않는다는 것을 알게되면, 표현이 처음 몇 문자와 일치 할 것이라고 생각하지만 실제로는 탐욕스러운 패턴이므로 계속 일치 할 것입니다.
탐욕과 인사가없고, 플러스? 회장이 아닙니다.
var s = '1023000'.match (/(/d+) (0*)/); s [ "1023000", "1023000", ""] var s = '1023000'.match (/^(/d+) (0*) $/); s [ "1023000", "1023000", "] var s = '1023000'.match (/^(/d+?) (0*) $/); s [ "10", "1", "0"]
Java 정규 표현식은 기본적으로 탐욕스러운 욕심 많은 매칭 패턴을 사용합니다. 이 유형의 가장 긴 일치 (.*)입니다. 가장 짧은 일치가 필요한 경우 (.*?)로 변경됩니다. 즉, 거의 일치 패턴입니다.
원칙 분석 :
욕심 많은 일치 패턴 인 경우 정규 표현 엔진은 문자열 끝까지 일치합니다. 경기가 거짓이되면 거꾸로 뒤로, 마지막 일치하는 위치를 찾아 일치하는 결과를 반환합니다. 거의 일치 패턴 인 경우, 정규 표현 엔진은 패턴의 끝에서 캐릭터와 일치 한 다음 한 걸음 물러서서 일치가 거짓임을 찾은 다음 가장 최근의 경기가 사실 인 위치로 다시 추적하여 결과를 반환합니다.
코드보기 :
Example 1:
public void test51 () {String str = "aaa/"bbb/"ccc/"dd/"eee"; System.out.println (str); str = str.replaceall ( "/"(.*)/" ","@"); System.out.println (str); } 산출:
AAA "BB"CC "DDD"EEEAAA@eee
Example 2:
@test public void test52 () {String str = "aaa/"bbb/"ccc/"dd/"eee"; System.out.println (str); str = str.replaceall ( "/"(.*?)/" ","@"); System.out.println (str); } 산출:
AAA "BB"CC "DDD"EEEAAA@CCC@EEE