정규 표현 식 의 탐욕 일치 와 탐욕 일치

3764 단어
정규 표현 식 의 탐욕 일치 와 비 탐욕 일치
       By default, pattern matching is greedy, which means that the matcher returns the longest match possible. For example, applying the pattern A.*c  to AbcAbcA matches AbcAbc  rather than the shorter Abc . To do nongreedy matching, a question mark must be added to the quantifier. For example, the pattern A.*?c  will find the shortest match possible.
// Greedy quantifiers
 String match = find("A.*c","AbcAbc"); // AbcAbc
// Nongreedy quantifiers
 match = find("A.*?c","AbcAbc"); // Abc
관 하 다 
http://topic.csdn.net/u/20100902/16/9a8f2249-86f2-4f80-b5f5-dbf8769ba674.html
탐욕
전체 문자열 이 일치 하 는 지 확인 하 세 요.일치 하 는 것 을 발견 하지 못 하면 마지막 문자열 의 마지막 문 자 를 지우 고 다시 시도 합 니 다.일치 하 는 것 을 발견 하지 못 했다 면,    마지막 문자열 을 다시 지 웁 니 다. 이 과정 은 일치 하거나 문자열 이 남 아 있 지 않 을 때 까지 반복 합 니 다.간단 한 양 사 는 모두 탐욕 양사 이다.
    타성 양사:
문자열 의 첫 번 째 자모 가 일치 하 는 지 먼저 보 세 요. 한 글자 만 으로 는 부족 하 다 면 다음 문 자 를 읽 고 두 문 자 를 구성 하 는 문자열 입 니 다.일치 하 는 것 을 발견 하지 못 하면 타성 양 어 는 일치 하 는 것 을 발견 하거나 전체 문자열 이 일치 하지 않 을 때 까지 문자열 에 문 자 를 계속 추가 합 니 다.타성 양사 와 탐 욕 스 러 운 양사 의 작업 방식 은 정반 대 이다.
    지배 양사:
전체 문자열 과 일치 하 는 것 만 시도 합 니 다.전체 문자열 이 일치 하지 않 으 면 더 이상 시도 하지 않 습 니 다.
    탐욕   타성 양사    지배 양사                      묘사 하 다.    -------------------------------------------------------------------------------------       ?             ??             ?+                      0 회 또는 1 회 나타 날 수 있 으 나 많아야 1 회 나타 날 수 있다.      *             *?               *+                      임 의적 으로 나타 날 수도 있 고 나타 나 지 않 을 수도 있다.      +             +?              ++                    한 번 또는 여러 번 나타 나 지만 적어도 한 번 은 나타난다.      {n}          {n}?           {n}+                   반드시 n 회 출현      {n,m}     {n,m}?       {n,m}+               적어도 n 번 은 나타 나 지만, 많 게 는 m 번 을 초과 해 서 는 안 된다.      {n,}         {n,}?          {n,}+                 임의의 번 이 나타 날 수 있 지만, 적어도 n 번 은 나타 날 수 있다.
    예 를 들 어 우 리 는 문자열 abbbaabbbaaabbb 1234 에서 abbb, aabbb, aaabbb 의 일치 성 을 얻 으 려 고 합 니 다.
    1. 탐욕
1        var regexp = /.*bbb/g;2        var a = str.match(regexp);3        alert(a.length);   //output:14        alert(a[0]);       //output:abbbaabbbaaabbb
    탐욕 양사 의 작업 과정 은 이렇게 표시 할 수 있다.      a)abbbaabbbaaabbb1234       b)abbbaabbbaaabbb123       c)abbbaabbbaaabbb12       d)abbbaabbbaaabbb1       e)abbbaabbbaaabbb //true     탐 욕 스 러 운 양 어 는 한 번 의 매 칭 을 얻 은 후에 일 을 멈 추 는 것 을 볼 수 있다. 비록 우 리 는 'g' (전체 매 칭) 을 추 가 했 지만.
    2. 타성 양사
1        var regexp = /.*?bbb/g;2        var a = str.match(regexp);3        alert(a.length);   //output:34        alert(a[0]);       //output:abbb5        alert(a[1]);       //output:aabbb6        alert(a[2]);       //output:aaabbb
    타성 양사 의 작업 과정 은 이렇게 표시 할 수 있다.      a)a       b)ab       c)abb       d) abbb / / 결 과 를 저장 하고 다음 위치 에서 다시 시작 합 니 다.         e)a        f)aa        g)aab       h)aabb       j) aabbb / / 결 과 를 저장 하고 다음 위치 에서 다시 시작 합 니 다.         e)a       e)aa       e)aaa       e)aaab        e)aaabb        e)aaabbb  //결 과 를 저장 하고 다음 위치 에서 다시 시작 합 니 다.
    JS 는 지 배 량 사 를 지원 하지 않 기 때문에 지 배 량 사 는 JAVA 로 만 보 여 드릴 수 있 습 니 다.
1        String string = "abbbaabbbaaabbb1234";2        Pattern p = Pattern.compile(".*+bbb");3        Matcher m = p.matcher(string);4        System.out.println(m.find());   //output:false5
    지배 양사 가 일률적으로 일치 하 는 방식 을 사용 하기 때문이다. 예 를 들 어:
    a)abbbaabbbaaabbb1234 //false
http://java.chinaitlab.com/base/773980.html

좋은 웹페이지 즐겨찾기