>백엔드 개발 >PHP 튜토리얼 >PHP 정규식 패턴 수정자란 무엇입니까?

PHP 정규식 패턴 수정자란 무엇입니까?

零下一度
零下一度원래의
2017-07-25 11:45:141392검색

패턴 수정자라고도 하는 PHP 패턴 수정자는 정규식의 구분 기호와 함께 사용됩니다. 이는 주로 정규식의 해석을 조정하고, 일치, 대체 및 기타 작업에서 정규식의 일부 기능을 확장하고, 정규식의 기능을 향상시키는 데 사용됩니다. 하지만 곳곳에 설명이 틀리거나 오해를 불러일으킬 수 있는 부분이 많아 오늘은 여러분의 참고를 위해 이 문서를 정리했습니다.

패턴 수정 기호 함수 설명
i 및 일반 일치는 대소문자를 구분하지 않으며
m 문자열을 여러 줄로 처리합니다. 기본 정규 시작 "^"과 끝 "$"는 대상 문자열을 단일 문자 "줄"로 처리합니다(개행 문자가 포함된 경우에도). "m"이 수정자에 추가되면 문자열의 각 줄의 시작과 끝은 "^"의 시작과 "$"의 끝을 가리킵니다.
s 이 수정자를 설정하면 일치하는 문자열은 줄바꿈을 포함하여 한 줄로 간주되고 줄바꿈은 일반 문자열로 처리됩니다.
x 이스케이프하지 않는 한 공백을 무시합니다.
e 은 preg_replace() 함수에서만 사용됩니다. 대체 문자열에서 역참조는 일반적인 대체에 사용되며 해당 (예: "대체 문자열")이 사용됩니다. PHP 코드 값으로 검색된 문자열을 해당 결과로 바꿉니다.
A 이 수정자를 사용하는 경우 표현식은 일치하는 문자열의 시작 부분에 있어야 합니다. 예를 들어 "/a/A"는 "abcd"와 일치합니다.
D 패턴의 $ 문자는 대상 문자의 끝과 일치합니다. 이 옵션이 없으면 달러 기호는 개행 문자인 경우 마지막 문자 앞에서도 일치합니다. 수정자 m이 설정된 경우 이는 무시됩니다.
E 은 "m"의 반대입니다. 이 수정자를 사용하면 "$"는 개행 문자 앞이 아닌 문자열의 절대 끝과 일치합니다. 이 모드는 기본적으로 켜져 있습니다.
U 그리디 모드는 물음표와 동일한 기능을 가지고 있습니다. 최대 매칭은 그리디 모드입니다.


기타 정보:

패턴 수정자: 정규식 패턴에 사용되는 수정자 설명

설명: 현재 PCRE에서 사용되는 수정자는 아래에 나열되어 있습니다. 괄호 안에는 이러한 수정자의 내부 PCRE 이름이 있습니다. 수정자의 공백과 줄 바꿈은 무시되며 다른 문자로 인해 오류가 발생합니다.

i (PCRE_CASELESS)

이 수정자를 설정하면 패턴의 문자가 대문자와 소문자 모두 일치합니다.

m(PCRE_MULTILINE)

기본적으로 PCRE는 대상 문자열을 단일 문자 "줄"로 처리합니다(줄바꿈이 포함된 경우에도 마찬가지). "줄 시작" 메타 문자(^)는 문자열의 시작 부분에만 일치하고 "줄 끝" 메타 문자($)는 문자열의 끝 부분과만 일치하거나 줄 바꿈인 경우 그 앞의 마지막 문자(예외)와 일치합니다. D는 수정자로 설정됩니다. 이는 펄과 동일합니다. 이 수정자가 설정되면 전체 문자열의 시작과 끝 외에도 "줄 시작"과 "줄 끝"이 일치하며, 개행 문자 앞뒤에도 각각 일치합니다. 이는 Perl의 /m 수정자와 동일합니다. 대상 문자열에 "n" 문자가 없거나 패턴에 ^ 또는 $가 없으면 이 수정자를 설정해도 아무런 효과가 없습니다.

s (PCRE_DOTALL)

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

x (PCRE_EXTENDED)

이 수정자를 설정하면 패턴의 공백 문자는 이스케이프되거나 문자 클래스에 포함되지 않는 한 완전히 무시되며 다음 개행 문자(포함) 사이의 모든 문자도 무시됩니다. 이는 Perl의 /x 수정자와 동일하며 복잡한 패턴에 주석을 추가할 수 있습니다. 그러나 이는 데이터 문자에만 적용됩니다. 공백 문자는 조건부 하위 패턴(?( 중간에 도입하는 시퀀스)과 같은 패턴의 특수 문자 시퀀스에 절대 나타날 수 없습니다.

e

이 수정자가 설정되면 대체 문자열에서 preg_replace()가 일반 대체를 수행합니다. 역참조에서 이를 PHP 코드로 평가하고 검색된 문자열을 결과로 바꿉니다. preg_replace()만 이 수정자를 사용하며 다른 PCRE 함수는 이를 무시합니다.

A에서는 사용할 수 없습니다. PCRE_ANCHORED)

이 수정자를 설정하면 패턴이 강제로 "고정"됩니다. 즉, 대상 문자열의 시작 부분에서만 일치하도록 강제됩니다. 이 효과는 적절한 패턴 자체에 의해 전달될 수도 있습니다.

D (PCRE_DOLLAR_ENDONLY)

이 수정자가 설정된 경우 패턴의 달러 메타 문자는 이 옵션이 없으면 대상 문자열의 끝과만 일치합니다. 개행 문자 앞에는 달러 기호도 일치합니다(그러나 다른 개행 문자 이전에는 일치하지 않음). m 수정자가 설정된 경우 이 옵션은 Perl에 해당하는 수정자가 없습니다. 여러 번 사용될 예정이면 일치 속도를 높이기 위해 먼저 분석할 가치가 있습니다. 이 수정자를 설정하면 고정된 시작 문자가 하나도 없는 고정되지 않은 패턴에만 유용합니다

U (PCRE_UNGREEDY)

이 수정자는 일치 횟수 값을 반전시켜 기본적으로 반복되지 않지만 뒤에 "?"가 붙습니다. 이는 Perl과 호환되지 않습니다. 패턴에 (?U) 수정자를 설정하거나 뒤에 물음표(예: .*?)를 설정합니다( PCRE_EXTRA)

이 수정자는 뒤에 오는 패턴의 백슬래시와 호환되지 않는 PCRE의 추가 기능을 활성화합니다. 특별한 의미가 없는 문자는 오류를 발생시키므로 향후 확장을 위해 이 조합을 유지합니다. 기본적으로 Perl과 마찬가지로 백슬래시 뒤에 특별한 의미가 없는 문자는 현재 이 문자 자체로 제어되지 않습니다. modifier

u (PCRE_UTF8)

이 수정자는 Perl과 호환되지 않는 PCRE의 추가 기능이 UTF-8로 처리됩니다. win32에서 PHP 4.2.3. 5부터 패턴의 UTF-8 유효성을 확인합니다.

위 내용은 PHP 정규식 패턴 수정자란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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