Java 정규의 탐욕 일치, 불활성 일치

탐욕 양사:
전체 문자열이 일치하는지 먼저 보십시오.일치하는 것을 발견하지 못하면 마지막 문자열의 마지막 문자를 삭제하고 다시 시도합니다.만약 일치하는 것을 발견하지 못했다면, 마지막 문자열을 다시 제거합니다. 이 과정은 일치하는 문자열이 발견되거나 문자열이 남지 않을 때까지 반복됩니다.단순 양사는 모두 탐욕 양사다.
불활성 양사:
먼저 문자열의 첫 번째 자모가 일치하는지 확인하고, 한 글자만 있어도 부족하면 다음 문자를 읽어서 두 문자의 문자열을 구성합니다.일치하는 것을 발견하지 못했을 때, 불활성 양사는 일치하는 것을 발견하거나 전체 문자열이 검사되었을 때까지 문자열에 문자를 추가합니다.타성 양사와 탐욕 양사의 작업 방식은 정반대다.
지배량사:
전체 문자열만 일치시키려고 시도합니다.전체 문자열이 일치하지 않으면 더 이상 시도하지 않습니다.
탐욕 양사 타성 양사 지배 양사 묘사
    -------------------------------------------------------------------------------------
      ?             ??             ?+0 회 또는 1 회 이상 표시 가능
      *             *?*+ 아무 때나 나타나거나 나타나지 않을 수 있음
      +             +?++ 한 번 이상 나타나지만 한 번 이상 나타납니다.
      {n}        {n}?{n}+ 반드시 n회 출현
      {n,m}    {n,m}?{n, m}+ 적어도 n번은 나타나지만 최대 m번은 초과할 수 없습니다
      {n,}       {n,}?{n,}+는 임의의 횟수가 나타날 수 있지만 적어도 n번은 나타날 수 있다
예를 들어 우리는 문자열 abbbaabbb1234에서 abbb,aabbb,aabbb의 일치를 얻어야 한다
1. 탐욕

       var regexp = /.*bbb/g;
        var a = str.match(regexp);
        alert(a.length);   //output:1
        alert(a[0]);       //output:abbbaabbbaaabbb
탐욕스러운 양사의 작업 과정은 이렇게 표시할 수 있다.
      a)abbbaabbbaaabbb1234
      b)abbbaabbbaaabbb123
      c)abbbaabbbaaabbb12
      d)abbbaabbbaaabbb1
      e)abbbaabbbaaabbb//true
탐욕스러운 양사는 한 번의 매칭을 얻은 후에 일을 멈추는 것을 볼 수 있다. 비록 우리가'g'(전역 매칭)를 추가했지만.
2. 타성 양사

        var regexp = /.*?bbb/g;
        var a = str.match(regexp);
        alert(a.length);   //output:3
        alert(a[0]);       //output:abbb
        alert(a[1]);       //output:aabbb
        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로만 설명할 수 있습니다.

        String string = "abbbaabbbaaabbb1234";
        Pattern p = Pattern.compile(".*+bbb");
        Matcher m = p.matcher(string);
        System.out.println(m.find());   //output:false
지배량사는 일률적으로 일치하기 때문이다. 예를 들어 다음과 같다.
    a)abbbaabbbaaabbb1234//false
상기에서 말한 것이 본고의 전체 내용입니다. 여러분이 좋아하셔서 자바의 정규 일치를 익히는 데 도움이 되었으면 합니다.
글을 친구에게 공유하거나 댓글을 남기는 데 시간이 좀 걸리세요.우리는 당신의 지지에 진심으로 감사할 것입니다.

좋은 웹페이지 즐겨찾기