정규식 플러스 대 스타 차이?
차이점은 무엇입니까?
(.+?)
과
(.*?)
내 PHP preg_match
정규식 에서 사용할 때 ?
이를 수량 자라고합니다.
*
0 개 이상의 선행 사용
+
앞의 남겨 중 하나 이상
기본적으로 수량자는 탐욕 스럽기 때문에 가능한 한 많은 문자와 일치합니다.
는 ?
한정사 후, "ungreedy"는 가능한 한 적게 일치 수단을 정량을 만들기 위해 동작을 변경합니다.
탐욕스러운 / 배고픈 예
예를 들어 " abab " 숭배
a.*b
"abab"과 일치합니다 (preg_match_all은 하나의 일치, "abab"을 반환 함).
while a.*?b
은 시작 "ab"와만 일치합니다 (preg_match_all은 두 개의 일치, "ab"를 반환합니다).
예를 들어 Regexr에서 온라인으로 정규식을 테스트 할 수 있습니다. 여기 욕심 많은 예제를 참조하십시오.
첫 번째 ( +
)는 하나 이상의 문자 입니다. 두 번째 ( *
)는 0 개 이상의 문자 입니다. 둘 다 탐욕스럽지 않고 ( ?
) 무엇이든 일치합니다 ( .
).
A 는 이전 패턴의 하나 이상의 인스턴스 +
와 일치 합니다. A 는 이전 패턴의 0 개 이상의 인스턴스 와 일치 합니다 .*
따라서 기본적으로는 사용하는 경우 +
패턴의 인스턴스가 하나 이상 있어야하며, 사용 *
하면 인스턴스가없는 경우에도 여전히 일치합니다.
+
하나 이상의 문자와 일치
*
모든 문자 (0 포함)와 일치
는 ?
그것이 가능한 몇 가지 문자로 일치하는 게으른 표현을 나타냅니다.
+
최소 1이고 *
0 일 수도 있습니다.
아래는 일치하는 것입니다.
ab
패턴 (ab.*)
은 다음의 결과와 함께 작업 그룹에 대한 일치를 반환합니다.ab
패턴 (ab.+)
이 일치하지 않고 아무것도 반환하지 않습니다.
문자열을 다음 그러나으로 변경하면 aba
패턴에 대해 반환 됩니다.(ab.+)
aba
별은 플러스와 매우 유사하지만, 유일한 차이점은 플러스가 앞의 문자 / 그룹 중 하나 이상과 일치하는 반면 시작은 0 이상과 일치하는 것입니다.
정규식에서 {i,f}
"사이 뜻 i
에 f
일치". 다음 예를 상상 보겠습니다.
{3,7}
3 ~ 7 개 일치를 의미합니다.{,10}
하한이없는 최대 10 개의 일치를 의미합니다 (즉, 하한이 0 임).{3,}
상한이없는 최소 3 개의 일치를 의미합니다 (즉, 상한이 무한대 임).{,}
일치 수에 대한 상한 또는 하한이 없음을 의미합니다 (즉, 하한은 0이고 상한은 무한대).{5}
정확히 4를 의미합니다.
대부분의 좋은 언어에는 약어가 포함되어 있으므로 RegEx도 마찬가지입니다.
+
의 약어입니다{1,}
*
의 약어입니다{,}
?
의 약어입니다{,1}
즉 +
, 하나 이상의 일치가 필요하고 일치하는 *
수에 관계없이 일치하거나 전혀 일치 ?
하지 않습니다 1 개 이하의 일치 또는 0 개 일치를 허용하지 않습니다.
카드 : Codecademy.com
이전 답변은 간단한 예를 강조하지 고 생각합니다.
예를 들어 배열이 있습니다.
numbers = [5, 15]
다음 정규식이 ^[0-9]+
일치 15
합니다. 그러나 ^[0-9]*
모두 일치합니다 5 and 15
. 은 차이점 +
연산자 에 이전 정규식의 중복 이 하나 이상 필요 하다는을 구석으로입니다.
참고 URL : https://stackoverflow.com/questions/8575281/regex-plus-vs-star-difference
'ProgramingTip' 카테고리의 다른 글
KnockoutJs v2.3.0 : 오류 동일한 요소에 바인딩을 여러 번 적용 할 수 없습니다. (0) | 2020.10.23 |
---|---|
C ++ deque 대 큐 대 스택 (0) | 2020.10.23 |
HQ YouTube 썸네일을 얻는 방법? (0) | 2020.10.23 |
Razor 엔진을 사용하여 MVC 5 프로젝트에 Date Picker Bootstrap 3을 추가하는 방법은 무엇입니까? (0) | 2020.10.23 |
Visual Studio Code에서 두 개의 로컬 분기를 어떻게 병합합니까? (0) | 2020.10.23 |