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개 이상의 인스턴스와 일치합니다.
따라서 기본적으로는,+
를 사용하는 경우 패턴의 인스턴스가 하나 이상 있어야 합니다.*
이치노
대조하는 문자열은 다음과 같습니다.
ab
" "(ab.*)
는 캡처 합니다.ab
「」에 비해,(ab.+)
일치하지 않고 아무것도 반환하지 않습니다.
following이 됩니다.aba
「」의 경우''(ab.+)
aba
+
1번, 1번입니다.*
0으로 하다
별은 플러스(+)와 매우 유사하지만 유일한 차이점은 플러스(+)가 앞의 문자/그룹 중 하나 이상과 일치하는 반면 별은 0 이상과 일치한다는 것입니다.
이전 답변에서는 간단한 예를 강조하지 못했다고 생각합니다.
예를 들어 어레이가 있습니다.
numbers = [5, 15]
^[0-9]+
:치:15
단, 만. 만. 만.^[0-9]*
5 and 15
점은 ''는 '다르다'는 '다르다'와 '다르다'는'+
연산자에는 이전 정규식 중 하나 이상의 중복이 필요합니다.
언급URL : https://stackoverflow.com/questions/8575281/regex-plus-vs-star-difference
'programing' 카테고리의 다른 글
대소문자를 구분하지 않는 문자열 비교 (0) | 2022.11.27 |
---|---|
jQuery 함수(새로운 jQuery 메서드 또는 플러그인)를 만드는 방법 (0) | 2022.11.27 |
Prepared Statement IN 조항의 대안? (0) | 2022.11.27 |
MariaDB의 인덱스 키 크기 제한은 얼마입니까? (0) | 2022.11.27 |
Numpy: 2D 어레이에서 행 집합을 무작위로 가져옵니다. (0) | 2022.11.27 |