ProgramingTip

정규식 플러스 대 스타 차이?

bestdevel 2020. 10. 23. 08:11
반응형

정규식 플러스 대 스타 차이?


차이점은 무엇입니까?

(.+?)

(.*?)

내 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}"사이 뜻 if일치". 다음 예를 상상 보겠습니다.

  • {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

반응형