-
PHP 정규식(PCRE)의 모든 것 - 일회성 서브 패턴(Once-only subpatterns)
Once-only subpatterns (단일 서브 패턴) 반복을 최대/최소화하면서 일치가 실패하면 반복되는 항목을 재평가하여 다른 반복 횟수로 나머지 패턴을 일치시킬 수 있는지 확인한다. 때로는 패턴의 작성자가 반복적인 일치를 수행 할 필요가 없음을 알 때는 이를 방지하거나 일치 성질을 변경하거나 다른 방법보다 먼저 실패하게하는 것이 유용하다. 예를 들어, 문자열 "123456bar"에 \d+foo 패턴을 적용하는 것을 고려해 보자. 6자리 모두를 일치한 다음 "foo"와 일치하지 않으면, 정규식의 정상적인 동작은 \d+ 항목과
-
PHP 정규식(PCRE)의 모든 것 - 어설션(Assertions)
Assertions (어설션, 단정) 어설션은 실제로 어떤 문자도 사용하지 않고 현재 일치 지점의 앞/뒤 문자에 대한 테스트이다. \b, \B, \A, \Z, \z, ^ 및 $로 코딩된 간단한 어설션은 앞서 설명했다. 더 복잡한 어서션은 서브 패턴으로 코딩 된다. 이 어설션은 대상 문자열의 현재 위치보다 앞을 검사하는 look-ahead와 뒤를 검사하는 look-behind 두 가지 종류가 있다. 어설션 서브 패턴은 현재 일치하는 위치가 변경되지 않는다는 점을 제외하면 일반적인 방법으로 일치한다. Look-ahead 어설션은 (?=
-
PHP 정규식(PCRE)의 모든 것 - 역 참조(Back references)
Back references (역 참조) 캐릭터 클래스 밖에서 백 슬래시 다음에 0 보다 큰 숫자는 패턴에서 이전(즉, 왼쪽으로) 캡처 서브 패턴에 대한 역 참조다(주어진 수보다 캡처된 서브 패턴의 수가 같거나 더 많을 경우). 그러나 백 슬래시 뒤의 10진수가 10 보다 작은 경우에는 항상 역 참조로 사용되며 전체 패턴에 많은 왼쪽 여는 괄호(()가 없는 경우에만 오류가 발생한다. 즉, 참조된 괄호는 10 보다 작은 숫자의 참조 왼쪽에 있을 필요는 없다. "전방 참조"는 반복이 관련되어 있고 오른쪽의 서브 패턴이 이전 반복에 참여
-
PHP 정규식(PCRE)의 모든 것 - 반복(Repetition)
Repetition (반복) 반복은 다음 항목 중 하나를 따를 수 있는 한정 기호로 지정된다. 이스케이프 가능한 단일 문자 . 메타 문자 캐릭터 클래스 back reference(역 참조) 어설션이 아닌 괄호로 묶인 서브 패턴 일반적으로 반복 수량어는 괄호({}) 안에 쉼표로 구분된 두 개의 숫자를 입력하여 허용되는 일치의 최소 및 최대 수를 지정한다. 숫자는 65536 보다 작아야 하며 첫 번째 숫자는 두 번째 숫자보다 작거나 같아야 한다. 예를 들어, z{2,4}는 "zz", "zzz" 또는 "zzzz"와 일치한다. 단독으로 닫
-
PHP 정규식(PCRE)의 모든 것 - 서브 패턴(Subpatterns)
Subpatterns (서브 패턴) 서브 패턴은 둥근 괄호(())로 구분되며 중첩 될 수 있다. 패턴의 일부를 서브 패턴으로 표시하는 것은 다음 두 가지를 수행한다. 선택 집합을 지역화 한다. 예를 들어 cat(aract|erpillar|) 패턴은 "cat", "cataract" 또는 "caterpillar" 중 하나와 일치한다. 괄호가 없으면 "cataract", "erpillar" 또는 빈 문자열과 일치한다. 서브 패턴을 캡처 서브 패턴으로 설정한다. 모든 패턴이 일치하면 서브 패턴과 일치하는 문자열의 부분은 pcre_exec(