Regex 플러스 대 스타의 차이?

다음 중 어떤 차이가 있습니까?

(.+?) 

그리고.

(.*?) 

php에서 사용할 때preg_match정규식?



질문에 대한 답변



이를 수량화라고 합니다.

*앞의 식 중 0개 이상

+1개 이상의 앞의 표현

디폴트에서는, 수량 지정자는 탐욕적입니다.즉, 가능한 한 많은 문자와 일치합니다.

?수량화자가 동작을 변경하여 이 수량화자가 “불합격”이 되도록 한 후, 가능한 한 적게 일치함을 의미합니다.

욕심/불충실 예시

예를 들어 문자열 “abab“에 있습니다.

a.*b“ab”과 일치합니다(preg_match_all은 일치한 “ababab”을 반환합니다).

하는 동안에a.*?b선두의 「ab」만 일치합니다(preg_match_all은 2개의 일치, 「ab」를 반환합니다).

정규식을 온라인으로 테스트할 수 있습니다. 예를 들어 Regexr에서 이 예제를 참조하십시오.




첫 번째 (+)는 1개 이상의 문자입니다.두 번째 (*)는 0자 이상입니다.둘 다 욕심이 없다(?일치시킵니다( )..).




+하나 이상의 문자와 일치합니다.

*임의의 숫자(0 포함)의 문자와 일치합니다.

?는 게으른 표현을 나타내므로 가능한 한 적은 글자로 일치합니다.




RegEx에서는{i,f}“사이”를 의미합니다.i로.f성냥”을 클릭합니다.다음 예시를 살펴보겠습니다.

  • {3,7}3 ~ 7의 매치를 의미합니다.
  • {,10}하한 없이 최대 10개의 일치(즉, 하한은 0)를 의미합니다.
  • {3,}상한이 없는 최소 3개의 일치(즉, 상한은 무한)를 의미합니다.
  • {,}일치 횟수에 대한 상한 또는 하한이 없음을 의미합니다(즉, 하한은 0이고 상한은 무한).
  • {5}정확히 4를 의미합니다.

대부분의 좋은 언어에는 약어가 포함되어 있습니다.RegEx도 약어도 포함되어 있습니다.

  • +의 줄임말이다{1,}
  • *의 줄임말이다{,}
  • ?의 줄임말이다{,1}

즉,+에는 적어도1개의 일치가 필요합니다.*임의의 수의 일치를 받아들이거나 일치가 전혀 없습니다.?는 1개 이하의 일치 또는0개 이하의 일치만을 받아들입니다.

크레딧 : Codecademy.com




A +는 앞의 패턴의 1개 이상의 인스턴스와 일치합니다.a*는 이전 패턴의 0개 이상의 인스턴스와 일치합니다.

따라서 기본적으로는,+를 사용하는 경우 패턴의 인스턴스가 하나 이상 있어야 합니다.*인스턴스가 없는 경우에도 일치합니다.