java - 正则捕捉中(.*?)和(.*)的区别
伊谢尔伦
伊谢尔伦 2017-04-18 10:55:01
0
5
618

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

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

모든 응답(5)
伊谢尔伦

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

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

Peter_Zhu

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

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

洪涛

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

小葫芦

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

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

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

으아아아
刘奇

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

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿