>백엔드 개발 >PHP 튜토리얼 >php — PCRE 정규식 앵커 및 기간

php — PCRE 정규식 앵커 및 기간

伊谢尔伦
伊谢尔伦원래의
2016-11-21 17:24:071169검색

앵커

문자 클래스 외부의 기본 일치 모드에서 ^는 현재 일치 지점이 대상 문자열의 시작 부분에 있다는 어설션입니다. 문자 클래스 내에서 ^는 문자 클래스에 설명된 문자의 부정을 나타냅니다(자세한 내용은 아래 참조).

^은 패턴의 첫 번째 문자일 필요는 없지만 선택적 분기에 있는 경우 해당 분기의 첫 번째 문자여야 합니다. 모든 대체 분기가 ^ 로 시작하는 경우, 즉 패턴이 대상의 시작 부분만 일치하도록 제한되는 경우 이를 "긴축된" 패턴이라고 합니다. (고정 패턴을 구성하는 다른 방법도 있습니다)

$는 현재 일치하는 지점이 대상 문자열의 끝에 있다고 주장하는 데 사용됩니다. 또는 대상 문자열이 개행 문자로 끝나는 경우 현재 일치하는 포인트는 개행 문자 위치에 있습니다(기본값). $는 패턴의 마지막 문자일 필요는 없지만 선택적 분기에 있는 경우 해당 분기의 끝에 있어야 합니다. $는 문자 클래스에서 특별한 의미가 없습니다.

$의 의미는 컴파일이나 일치 중에 PCRE_DOLLAR_ENDONLY를 설정하여 문자열의 끝 부분만 일치하도록 변경할 수 있습니다. 이는 Z 어설션의 동작에 영향을 주지 않습니다. PCRE_MULTILINE 옵션이 설정되면

^ 및 $ 문자의 의미가 변경됩니다. 이 경우 각 개행 문자 뒤와 앞의 문자와 대상 문자열의 시작과 끝도 일치합니다. 예를 들어 /^abc$/ 패턴은 여러 줄 모드에서 대상 문자열 "defnabc"와 성공적으로 일치하지만 일반적으로 일치하지는 않습니다. 따라서 모든 선택적 분기는 ^ 로 시작하므로 단일 행 모드에서는 고정 모드가 되고 다중 행 모드에서는 고정 해제됩니다. PCRE_MULTILINE이 설정된 후에는 PCRE_DOLLAR_ENDONLY 옵션이 유효하지 않게 됩니다.

참고: A, Z, z 등의 이스케이프 시퀀스는 모든 모드에서 대상 문자열의 시작과 끝을 일치시키는 데 사용할 수 있습니다. 그리고 패턴의 모든 분기가 A로 시작하는 경우에도 PCRE_MULTILINE 설정 여부에 관계없이 타이트합니다.

마침표

문자 클래스 외부에서 패턴의 마침표는 인쇄할 수 없는 문자를 포함하여 대상 문자열의 모든 문자와 일치하지만 (기본적으로) 개행은 제외됩니다. PCRE_DOTALL이 설정된 경우 마침표는 개행 문자와 일치합니다. 마침표 처리는 ^ 및 $ 처리와 관련이 없습니다. 유일한 관계는 둘 다 개행을 포함한다는 것입니다. 문자 클래스에서는 마침표가 의미가 없습니다.

C는 단일 바이트 문자를 일치시키는 데 사용할 수 있습니다. 즉, UTF-8 모드에서는 마침표가 다중 바이트 문자와 일치할 수 있습니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.