2013-04-28 3 views
2

나는 정규식에서 마지 못해 한정 기호를 사용하지 않았으며 그 사이트의 기능과 사용법을 이해하기 위해 몇 가지 질문을했습니다. similar question은 매우 설명 적이지만 java tutorial의 예와 어떤 관련이 있는지 아직도 이해할 수 없습니다. 나는 마지 못해 한정어가 가능한 한 적은 일치하는 것을 이해했습니다. 그래서, 어떻게 설명 할 않는 문자열에 정규식regectant 수량 한정자를 정규식에서 사용

".*?foo" 

"xfooxxxxxxfoo" 

수익률이 일치하는지 : "xfoo""xxxxxxfoo"? 소유격 정량의 설명도 부족하기 때문에 동일한 문자열에 정규식

".*+foo" 

아무것도 일치하지 않는 이유

또한, 누군가가 설명 할 수 있을까?

+1

[이 튜토리얼에서] (http://www.regular-expressions.info/repeat.html) 매우 포괄적 인 설명이 있습니다. 그리고 [여기에는 소유량 한정어에 관한 부분이있다] (http://www.regular-expressions.info/possessive.html). 이 두 페이지에서 읽어야하는 이전 챕터의 양을 기억하지 못하지만 한 번 사용해 볼 가치가 있습니다. 설명의 일부가 붙어 있다면 실제로 전체 자습서를 읽는 것이 좋습니다. 제 의견으로는 아주 명확하고 잘 설명되어 있습니다. –

답변

3

"욕심 많고 까다로운 소유주 사이의 차이점"섹션에있는 설명은 매우 분명합니다. 그것의 어느 부분을 이해하지 못합니까?

사용자의 특정 질문에 대답하기 : 패턴 ".*?foo"를 들어

  • 을 꺼린 정량 (.*?) 먼저 아무것도 잡고 없다 나머지 패턴 (foo)은 일치하지 않습니다. 매칭은 마지 못해 정량자를 백업 한 다음 한 문자를 붙입니다 (x); 나머지 패턴은 일치합니다. 전체 패턴은 다시 (첫 번째 "foo" 이후) 시작하고 두 번째 일치가있는 두 번째 foo 앞에 모든 x자를 붙잡을 때까지 일치하지 않습니다. 패턴에 대한

  • (".*+foo")는 소유 한정사 (.*+)는 모든 가능한 입력을 잡고 ("." 아무것도 일치하기 때문에)와 패턴의 "foo" 부분에 맞게 남은 아무것도 없다. ".*+"이 소유이기 때문에 아무것도 반환하지 않습니다. 따라서 탐욕스러운 양의 값과는 달리, 양의 값을 매칭하는 양의 값과 일치시킬 때 실패하게됩니다.