정규식(PCRE) Possible modifiers in regex patterns

현재 가능한 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 수정자와 동일하며 복잡한 패턴 내부에 주석을 포함할 수 있습니다. 그러나 이것은 데이터 문자에만 적용됩니다. 공백 문자는 패턴의 특수 문자 시퀀스 내에 절대 나타날 수 없습니다. 예를 들어 시퀀스(?( 조건부 하위 패턴을 도입하는?).
A (PCRE_ANCHORED)
이 수정자가 설정되면 패턴이 강제로 "고정"됩니다. 즉, 검색 중인 문자열("주제 문자열")의 시작 부분에서만 일치하도록 제한됩니다. 이 효과는 또한 패턴 자체의 적절한 구성을 통해 얻을 수 있으며 이는 Perl에서 수행할 수 있는 유일한 방법입니다.
D (PCRE_DOLLAR_ENDONLY)
이 수정자가 설정되면 패턴의 달러 메타 문자는 주제 문자열의 끝에서만 일치합니다. 이 수식어가 없으면 달러는 개행 문자인 경우 마지막 문자 바로 앞에도 일치합니다(그러나 다른 개행 문자 앞에는 일치하지 않음). m 수정자가 설정된 경우 이 수정자는 무시됩니다. Perl에는 이 수식어에 해당하는 것이 없습니다.
S
패턴을 여러 번 사용할 경우 일치하는 데 걸리는 시간을 단축하기 위해 분석하는 데 더 많은 시간을 할애할 가치가 있습니다. 이 수정자가 설정되면 이 추가 분석이 수행됩니다. 현재 패턴 연구는 고정된 시작 문자가 하나 없는 고정되지 않은 패턴에만 유용합니다.
U (PCRE_UNGREEDY)
이 수정자는 수량자의 "탐욕"을 반전시켜 기본적으로 탐욕스럽지 않지만 ?가 뒤따르면 탐욕스러워집니다. Perl과 호환되지 않습니다. 패턴 내의 (?U) 수정자 설정이나 수량자 뒤에 있는 물음표(예: .*?)로 설정할 수도 있습니다.

메모: 일반적으로 ungreedy 모드에서는 pcre.backtrack_limit 문자 이상을 일치시킬 수 없습니다.

X (PCRE_EXTRA)
이 수정자는 Perl과 호환되지 않는 PCRE의 추가 기능을 켭니다. 특별한 의미가 없는 문자가 뒤에 오는 패턴의 백슬래시는 오류를 유발하므로 향후 확장을 위해 이러한 조합을 예약합니다. 기본적으로 Perl에서와 같이 백슬래시 뒤에 특별한 의미가 없는 문자는 리터럴로 처리됩니다. 현재 이 수정자에 의해 제어되는 다른 기능은 없습니다.
J (PCRE_INFO_JCHANGED)
(?J) 내부 옵션 설정은 로컬 PCRE_DUPNAMES 옵션을 변경합니다. 하위 패턴에 대해 중복 이름을 허용합니다. PHP 7.2.0부터 J도 수정자로 지원됩니다.
u (PCRE_UTF8)
이 수정자는 Perl과 호환되지 않는 PCRE의 추가 기능을 켭니다. 패턴 및 제목 문자열은 UTF-8로 처리됩니다. 유효하지 않은 주제는 preg_* 함수가 아무것도 일치하지 않게 합니다. 잘못된 패턴은 E_WARNING 수준의 오류를 트리거합니다. 5 및 6 옥텟 UTF-8 시퀀스는 유효하지 않은 것으로 간주됩니다.