정규식(PCRE) PCRE Patterns Anchors

문자 클래스 외부의 기본 일치 모드에서 곡절 문자(^)는 현재 일치 지점이 주제 문자열의 시작 부분에 있는 경우에만 참인 어설션입니다. 문자 클래스 내에서 곡절(^)은 완전히 다른 의미를 갖습니다(아래 참조).

Circumflex(^)는 여러 대안이 포함된 경우 패턴의 첫 번째 문자일 필요는 없지만 패턴이 해당 분기와 일치하는 경우 나타나는 각 대안에서 첫 번째 문자여야 합니다. 가능한 모든 대안이 곡절(^)로 시작하는 경우, 즉 패턴이 주제의 시작 부분에서만 일치하도록 제한되는 경우 "고정된" 패턴이라고 합니다. (패턴을 고정시킬 수 있는 다른 구성도 있습니다.)

달러 문자($)는 현재 일치 지점이 주제 문자열의 끝에 있거나 문자열의 마지막 문자(기본적으로)인 개행 문자 바로 앞에 있는 경우에만 true인 어설션입니다. 달러($)는 여러 대안이 포함된 경우 패턴의 마지막 문자일 필요는 없지만 표시되는 분기의 마지막 항목이어야 합니다. 달러는 문자 클래스에서 특별한 의미가 없습니다.

컴파일시나 매칭시 PCRE_DOLLAR_ENDONLY 옵션을 설정하여 문자열의 맨 끝에서만 매칭되도록 달러의 의미를 변경할 수 있다. 이것은 \Z 어설션에 영향을 미치지 않습니다.

PCRE_MULTILINE 옵션이 설정되면 곡절 및 달러 문자의 의미가 변경됩니다. 이 경우 대상 문자열의 시작과 끝에서 일치하는 것 외에도 내부 "\n" 문자 바로 뒤와 바로 앞에서 각각 일치합니다. 예를 들어 /^abc$/ 패턴은 여러 줄 모드에서 제목 문자열 "def\nabc"와 일치하지만 그렇지 않은 경우 일치하지 않습니다. 결과적으로 모든 분기가 "^"로 시작하기 때문에 단일 라인 모드에서 고정된 패턴은 다중 라인 모드에서 고정되지 않습니다. PCRE_MULTILINE이 설정된 경우 PCRE_DOLLAR_ENDONLY 옵션은 무시됩니다.

시퀀스 \A, \Z 및 \z는 두 모드에서 주제의 시작과 끝을 일치시키는 데 사용할 수 있으며 패턴의 모든 분기가 \A로 시작하는 경우 PCRE_MULTILINE이 설정되거나 아니다.