찾다

 >  Q&A  >  본문

java - 正则捕捉中(.*?)和(.*)的区别

Java使用正则匹配捕捉
1 Pattern p = Pattern.compile("name="sign" value="(.*)"/>");
2 Pattern p = Pattern.compile("name="sign" value=*"(.?)**"/>");
第二个比第一个多了一个?号,请问其中区别是什么

伊谢尔伦伊谢尔伦2804일 전628

모든 응답(5)나는 대답할 것이다

  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:57:01

    욕심 많은 사람과 욕심 없는 사람의 차이.

    간단히 말하면, 욕심이 없다는 것은 나중에 또 다른 일치가 있든 없든 일치하면 멈추지 않는다는 뜻입니다.

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:57:01

    정규 표현식에 반복을 허용하는 한정자가 포함된 경우 일반적인 동작은 가능한 한 많은 문자를 일치시키는 것입니다(계속 전체 표현식이 일치하도록 허용함). 예를 들어 a.*b 표현식을 사용하면 a로 시작하고 b로 끝나는 가장 긴 문자열과 일치합니다. 이를 사용하여 aabab을 검색하면 전체 문자열 aabab과 일치합니다. 이를 탐욕적 일치라고 합니다.
    때로는 지연 매칭, 즉 가능한 한 적은 수의 문자를 매칭해야 하는 경우도 있습니다. 위에 제공된 한정자는 뒤에 물음표 ?를 추가하여 지연 일치 패턴으로 변환할 수 있습니다. 이런 방식으로 .*?는 반복 횟수에 관계없이 일치하지만 최소한의 반복을 사용하여 전체 일치를 성공시키는 것을 의미합니다. 이제 예제의 게으른 버전을 살펴보세요.
    a.*?b는 a로 시작하고 b로 끝나는 가장 짧은 문자열과 일치합니다. aabab에 적용하면 aab(첫번째~세번째 문자), ab(네번째~다섯번째 문자)와 일치하게 됩니다.

    복사: http://deerchao.net/tutorials... 정규식 소개 30분, 탐욕스러운 부분과 게으른 부분

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-18 10:57:01

    전자는 일치하는 대상을 찾은 후 중지하고 후자는 일치하는 대상을 모두 찾습니다.

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-18 10:57:01

    이 질문은 정규 표현식의 탐욕 모드와 게으른 모드(비탐욕 모드라고도 함)에 관한 것입니다
    먼저 이 두 모드의 정의를 살펴보겠습니다

    1. 그리디 모드, 최대 매칭*,+,'{n,}',.*모두 그리디 모드에 속합니다. 예

    으아아아
    1. Lazy 모드는 성공적인 매칭을 전제로 가능한 한 적은 횟수로 매칭합니다.
      그래도 위의 예는 다음과 같습니다.

    으아아아

    회신하다
    0
  • 怪我咯

    怪我咯2017-04-18 10:57:01

    ?가장 작은 일치 항목이 선택됩니다.

    회신하다
    0
  • 취소회신하다