PHP - PCRE 정규식 패턴 수정자

伊谢尔伦
풀어 주다: 2016-11-21 17:07:26
원래의
1309명이 탐색했습니다.

현재 사용 가능한 PCRE 수정자는 다음과 같습니다. 괄호 안에 언급된 이름은 PCRE 내부 수정자의 이름입니다. 패턴 수정자의 공백과 줄 바꿈은 무시되며 다른 문자로 인해 오류가 발생합니다.

i (PCRE_CASELESS)

이 수정자를 설정하면 패턴의 문자가 대소문자를 구분하지 않고 일치됩니다.

m (PCRE_MULTILINE)

기본적으로 PCRE는 대상 문자열이 한 줄의 문자(그러나 실제로는 여러 줄을 포함할 수 있음), "줄 시작" 메타 문자로 구성되어 있다고 생각합니다. ( ^)는 문자열의 시작 부분에만 일치하고 "줄 끝" 메타 문자($)는 문자열 끝이나 마지막 개행 문자(D 수정자가 설정되지 않은 경우)에만 일치합니다. 이 동작은 Perl과 동일합니다. 이 수정자가 설정되면 "줄 시작"과 "줄 끝"은 대상 문자열의 개행 문자 앞이나 뒤와 일치합니다. 또한 각각 대상 문자열의 시작과 끝과도 일치합니다. 이는 Perl의 /m 수정자와 동일합니다. 대상 문자열에 "n" 문자가 없거나 패턴에 ^ 또는 $가 나타나지 않으면 이 수정자를 설정해도 효과가 없습니다.

s (PCRE_DOTALL)

이 수정자를 설정하면 패턴의 점 메타 문자가 줄 바꿈을 포함한 모든 문자와 일치합니다. 이 수정자가 없으면 마침표는 개행 문자와 일치하지 않습니다. 이 수정자는 Perl의 /s 수정자와 동일합니다. [^a]와 같은 부정 문자 클래스는 이 수정자의 설정에 관계없이 항상 개행 문자와 일치합니다.

x (PCRE_EXTENDED)

이 수정자를 설정하면 이스케이프되지 않거나 문자 클래스에 없는 패턴의 공백 데이터 문자는 항상 무시되고 사이의 이스케이프되지 않은 문자에 배치됩니다. 정의된 문자 클래스 외부의 # 문자와 다음 개행 문자도 무시됩니다. 이 수정자는 Perl의 /x 수정자와 동일하며 컴파일된 스키마에 주석을 포함할 수 있습니다. 참고: 이는 데이터 문자에만 해당됩니다. 공백 문자는 여전히 패턴의 특수 문자 시퀀스에 나타날 수 없습니다. 예를 들어 시퀀스 (?()는 조건부 하위 그룹을 도입합니다(주석: 이 구문으로 정의된 특수 문자 시퀀스에 공백 문자가 나타나면 컴파일 오류가 발생합니다. 예를 들어 (?(는 오류를 발생시킵니다.)

e (PREG_REPLACE_EVAL)

이 수정자가 설정되면 preg_replace()는 역참조 대체를 수행한 후 대체된 문자를 대체합니다. 문자열은 PHP 코드(평가 함수 모드)로 평가되어 실행되며, 실행 결과는 작은따옴표, 큰따옴표, 백슬래시() 및 NULL 문자로 대체됩니다. 백슬래시.


참고: 교체 매개변수가 유효한 PHP 코드 문자열로 구성되어 있는지 확인하세요. 그렇지 않으면 PHP는 preg_replace()가 있는 줄에서 해석 오류를 생성합니다. preg_replace()가 이 수정자를 사용하면 다른 PCRE 함수는 이 수정자를 무시합니다.

A (PCRE_ANCHORED)

이 수정자가 설정되면 모드도 "고정" 모드로 강제 설정됩니다. 이는 대상 문자열의 시작 부분에서만 검색하도록 일치를 제한하는 것입니다. 이 효과는 적절한 패턴을 사용하여 구성할 수도 있으며 이는 Perl에서 이 패턴을 구현하는 유일한 방법입니다. PCRE_DOLLAR_ENDONLY)

이 수정자가 설정되면 패턴의 달러 기호 메타 문자는 대상 문자열의 끝과만 일치합니다. 이 수정자가 설정되지 않으면 문자열이 다음으로 끝날 때 달러 기호도 일치합니다. 개행 문자. 수정자 m이 설정된 경우 이 개행 문자는 무시됩니다.

S

패턴이 필요한 경우. 여러 번 사용하면 일치 속도를 향상시키기 위해 추가 분석을 수행하는 데 시간을 투자할 가치가 있습니다. 이 수정자가 설정된 경우 이 추가 분석은 고정되지 않은 패턴 일치에만 적용됩니다. 즉, 단일 고정 시작 문자 없음)

U (PCRE_UNGREEDY)

수정자는 수량자의 "를 반전시킵니다. Greedy" 모드는 기본적으로 수량자를 non-greedy로 만들 수 있습니다. ?를 사용하여 욕심을 나타냅니다. 이는 Perl과 호환되지 않습니다. 인트라 모드 수정자 설정(?U)을 사용하여 설정할 수도 있고, 수량자 뒤에 물음표를 사용하여 욕심이 없는 것으로 표시할 수도 있습니다(예: .* ?)

참고: non-greedy 모드에서는 pcre.backtrack_limit를 초과하는 문자는 일반적으로 일치하지 않습니다.

X (PCRE_EXTRA)

이 수정자는 PCRE와 Perl 간에 호환되지 않는 첨부 기능을 활성화합니다. 패턴의 백슬래시 뒤에 특별한 의미가 없는 문자가 오면 오류가 발생하며 이러한 문자는 이전 버전과의 호환성을 위해 보존됩니다. 기본적으로 Perl에서는 백슬래시 뒤에 특별한 의미가 없는 문자가 오는 것이 해당 문자의 원본 텍스트로 간주됩니다. 현재 이 수정자로 제어되는 다른 기능은 없습니다.

J(PCRE_INFO_JCHANGED)

내부 옵션 설정(?J)은 로컬 PCRE_DUPNAMES 옵션을 수정합니다. 중복된 이름을 가진 하위 그룹을 허용합니다. (주석: 내부 옵션을 통해서만 설정할 수 있으며 외부 /J 설정은 오류를 생성합니다.)

u (PCRE_UTF8)

이 수정자는 Perl과 호환되지 않는 추가 기능을 활성화합니다. 패턴 문자열은 UTF-8로 간주됩니다. 이 수정자는 Unix의 경우 PHP 4.1.0 이상, Win32의 경우 PHP 4.2.3부터 사용할 수 있습니다. PHP 4.3.5는 패턴의 utf-8 유효성 검사를 시작합니다.


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!