현재 사용 가능한 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를 초과하는 문자는 일반적으로 일치하지 않습니다.
이 수정자는 Perl과 호환되지 않는 추가 기능을 활성화합니다. 패턴 문자열은 UTF-8로 간주됩니다. 이 수정자는 Unix의 경우 PHP 4.1.0 이상, Win32의 경우 PHP 4.2.3부터 사용할 수 있습니다. PHP 4.3.5는 패턴의 utf-8 유효성 검사를 시작합니다.