차이점은 무엇입니까?
(.+?)
과
(.*?)
내 PHP preg_match정규식 에서 사용할 때 ?
차이점은 무엇입니까?
(.+?)
과
(.*?)
내 PHP preg_match정규식 에서 사용할 때 ?
답변:
이를 수량 자라고합니다.
* 0 개 이상의 선행 표현식
+ 앞의 표현식 중 하나 이상
기본적으로 수량자는 탐욕 스럽기 때문에 가능한 한 많은 문자와 일치합니다.
는 ?한정사 후, "ungreedy"는 가능한 한 적게 일치 수단을이 정량을 만들기 위해 동작을 변경합니다.
탐욕스러운 / 배고픈 예
예를 들어 " abab " 문자열
a.*b "abab"과 일치합니다 (preg_match_all은 하나의 일치, "abab"을 반환합니다).
while a.*?b은 시작 "ab"와만 일치합니다 (preg_match_all은 두 개의 일치 "ab"를 반환 함).
예를 들어 Regexr에서 온라인으로 정규식을 테스트 할 수 있습니다. 여기 욕심 많은 예제를 참조하십시오.
(.+?)하고 (.*?)있는 정규 표현식의 다양한 위치에서 다르게 행동 a(.+?), (.+?)b, a(.+?)b, a(.*?), (.*?)b, a(.*?)b.
.*가능한 한 많이 일치합니다. 가능한 한 일찍 중지하려면, 당신은 그것을 ungreedy 확인해야.*?
A 는 이전 패턴의 하나 이상의 인스턴스 +와 일치 합니다. A 는 0 개 이상의 일치* 는 이전 패턴의 인스턴스 .
따라서 기본적으로 a를 사용하는 +경우 패턴의 인스턴스가 하나 이상 있어야하며, 사용 *하면 인스턴스가없는 경우에도 여전히 일치합니다.
+ 하나 이상의 문자와 일치
* 모든 문자 (0 포함)와 일치
는 ?그것이 가능한 몇 가지 문자로 일치하므로, 게으른 표현을 나타냅니다.
정규식에서 {i,f}"사이 뜻 i에 f일치". 다음 예를 살펴 보겠습니다.
{3,7} 3 ~ 7 개 일치를 의미합니다. {,10} 하한이없는 최대 10 개의 일치를 의미합니다 (즉, 하한이 0 임).{3,} 상한이없는 최소 3 개의 일치를 의미합니다 (즉, 상한이 무한대 임).{,} 일치 수에 대한 상한 또는 하한이 없음을 의미합니다 (즉, 하한은 0이고 상한은 무한대).{5} 정확히 4를 의미합니다. 대부분의 좋은 언어에는 약어가 포함되어 있으므로 RegEx도 마찬가지입니다.
+ 의 약어입니다 {1,}* 의 약어입니다 {,}? 의 약어입니다 {,1}즉 +, 하나 이상의 일치가 필요하고 일치하는 *수에 관계없이 일치하거나 전혀 일치 ?하지 않으며 1 개 이하의 일치 또는 0 개 일치를 허용하지 않습니다.
크레딧 : Codecademy.com