类库下载 java类库 Java 정규식에서 Greedy Reluctant Possessive의 차이점

Java 정규식에서 Greedy Reluctant Possessive의 차이점

Oct 15, 2016 pm 01:36 PM

Java 공식 문서 http://docs.Oracle.com/javase/7/docs/api/java/util/regex/Pattern.html에서 정규 표현식이 수량자를 나타내는 것을 볼 수 있습니다. 상징, 즉 탐욕, 꺼림, 소유. 그 의미는 다음과 같습니다.

Java 정규식에서 Greedy Reluctant Possessive의 차이점

욕심, 꺼림, 소유의 차이

예시

위의 표를 보면 , 우리는 세 수량자의 의미가 동일하다는 것을 알 수 있습니다(예를 들어 X?, X?? 및 X?+는 모두 한 번 또는 한 번이 아님을 의미함). 그러나 이들 사이에는 여전히 미묘한 차이가 있습니다. 먼저 예를 살펴보겠습니다.

1.Greedy

public static void testGreedy() {  
    Pattern p = Pattern.compile(".*foo");  
    String strText = "xfooxxxxxxfoo";  
    Matcher m = p.matcher(strText);  
    while (m.find()) {  
        System.out.println("matched form " + m.start() + " to " + m.end());  
    }  
}
로그인 후 복사

결과:

form 0 ~ 13

2.Reluctant

public static void testReluctant() {  
    Pattern p = Pattern.compile(".*?foo");  
    String strText = "xfooxxxxxxfoo";  
    Matcher m = p.matcher(strText);  
    while (m.find()) {  
        System.out.println("matched form " + m.start() + " to " + m.end());  
    }  
}
로그인 후 복사

결과:

형식 0~4 일치

형식 4~13 일치

소유형

public static void testPossessive() {  
    Pattern p = Pattern.compile(".*+foo");  
    String strText = "xfooxxxxxxfoo";  
    Matcher m = p.matcher(strText);  
    while (m.find()) {  
        System.out.println("matched form " + m.start() + " to " + m.end());  
    }  
}
로그인 후 복사

결과:

//매칭 성공

원리 설명

매처가 입력 문자열을 처음 시도할 때 전체 일치 항목을 읽어야 하기 때문에 Greedy 수량자를 "greedy"라고 합니다. 첫 번째 일치 시도가 실패하면 문자별로 뒤에서 앞으로 돌아가서 일치가 성공하거나 돌아갈 문자가 없을 때까지 다시 일치를 시도합니다.

패턴 문자열: .*foo

검색 문자열: xfooxxxxxxfoo

결과: 0~13 형식 일치

비교 과정은 다음과 같습니다

Java 정규식에서 Greedy Reluctant Possessive의 차이점

Reluctant는 Greedy와 반대되는 방법을 사용합니다. 입력 문자열의 첫 번째(문자) 위치부터 시작하여 전체를 완료하려고 시도할 때까지 일치 검색에서 마지 못해 한 문자만 읽습니다. 끈.

패턴 문자열: .*foo

검색 문자열: xfooxxxxxxfoo

결과: 형식 0~4와 일치

형식 4~13과 일치

비교 과정은 다음과 같습니다

Java 정규식에서 Greedy Reluctant Possessive의 차이점

소유 수량자는 항상 전체 입력 문자열을 읽고 한 번(한 번만) 일치를 시도하여 성공적으로 일치합니다. . 그렇게 해도 전체 경기가 성공할 수 있습니다.

패턴 문자열: .*foo

검색 문자열: xfooxxxxxxfoo

결과:

//Unmatched 성공적으로

비교 프로세스 다음

Java 정규식에서 Greedy Reluctant Possessive의 차이점

참고 기사: http://docs.oracle.com/javase/tutorial/essential/regex/Quant.html

한 번 살펴보겠습니다. 예:

패턴 문자열: .+[0-9]

검색 문자열: abcd5aabb6

결과: 0~10 형식 일치

패턴 문자열: .+?[0-9]

검색 문자열: abcd5aabb6

결과: 형식 0~4 일치

패턴 문자열: .{1,9}+[0-9]

검색 문자열: abcd5aabb6

결과: 0~10 형식과 일치

패턴 문자열: .{1,10}+[0-9]

검색 문자열: abcd5aabb6

결과: 일치 실패


본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)