차이점은 무엇입니까?
(.+?)
과
(.*?)
내 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