일반적으로 사용되는 PHP 정규식 및 문법 주석 요약

WJ
풀어 주다: 2023-04-08 17:54:01
앞으로
2995명이 탐색했습니다.

기본 구문

구분 기호:

정규 표현식의 시작과 끝을 식별합니다. '/', '#' 또는 '{ }'를 사용합니다. '{ }' 구문도 정규 표현식일 수 있기 때문입니다. 표현식 혼동을 피하기 위해 수식 연산자를 사용하지 않는 것이 좋습니다. 권장 사용법은 다음과 같습니다.

Copy$pattern = '/[0-9]/';  //我喜欢这个,看起来比较简洁 $pattern = '#[0-9]#';
로그인 후 복사

Atoms:

보이는 원자: 유니코드 인코딩 테이블에서 키보드 출력 후 육안으로 볼 수 있는 문자(예: 구두점 / ? , etc. 보이는 문자
No Visible Atom: 키보드 출력 후 육안으로 볼 수 없는 유니코드 인코딩 테이블의 문자(예: newline n, tab t, space 등) 일반적으로 이 세 가지만 사용됩니다(newline은 일반적으로 다른 문자와 일치합니다. 왜냐하면 줄 바꿈만 일치할 수 없기 때문입니다.
팁: 일치하는 연산자 앞에 ''를 추가해야 합니다. 예: '+' 기호가 일치하는 경우 '+'를 써야 합니다.

메타문자

원자 필터링 방법:

| 둘 이상의 분기 선택과 일치

[] 대괄호 안의 원자와 일치
[^] 대괄호 안의 원자를 제외한 모든 문자와 일치
예: Duang|duang 또는 [ Dd ]uang은 Duang과 duang을 모두 일치시킬 수 있습니다
간격 쓰기: [a-z]는 a에서 z까지의 문자와 일치하고, [0-9]는 0에서 9까지의 문자와 일치합니다. [a-z0-9]
일 수도 ​​있습니다. 개행 문자
d를 제외한 모든 문자와 일치합니다. 즉, {0-9]
D는 십진수가 아닌 숫자 [^0-9]와 일치합니다. [^d]
s와 동일합니다. 즉, [fnrtv]
S는 보이는 원자, 즉 [fnrtv]와 일치합니다. 이는 [s]z
w와 동일하며 모든 숫자, 문자와 일치합니다. 또는 밑줄, 즉 [0 -9a-zA-Z_]
W는 숫자가 아닌 문자, 밑줄, [0-9a-zA-Z_]와 일치하며 [w]

정량자

와 동일합니다.
{n}은 앞의 것을 나타냅니다. 원자는 정확히 n번 나타납니다.

[n]은 이전 원자가 n번 이상 나타남을 의미합니다.
{n,m}은 n번 이상, 최대 m번 나타납니다.
*는 0번, 한 번 또는 여러 번 일치합니다. 즉, {0,}
+ 한 번 이상 일치합니다. 즉, {1,}
? 0 또는 1번 일치합니다. 즉, {0,1}

Boundary control

^ 문자열 시작 부분의 위치를 ​​일치시킵니다.

$ 일치합니다. 문자열 끝의 위치
예: ^ John은 일치할 수 있음: John이지만 일치할 수 없음: 123John, 문자열이 John으로 시작한다고 규정되어 있기 때문입니다

패턴 단위

()는 전체 항목을 원자로 일치합니다. , 예: (X|x)iaomi, Xiaomi

수정 모드

탐욕스러운 매칭

일치 결과가 모호할 경우 더 긴 것을 선택하세요(기본값)

Lazy 매칭

일치 결과에 모호함이 있는 경우 가장 짧은 것을 선택하고 정규 표현식을 사용하세요. '/' 뒤에 'U'를 추가하세요(예: '/[0-9]/U');

예:

Copy$subject = "test__123123123";
preg_match('/test.+123/', $subject, $matches); //贪婪模式  var_dump($matches);
preg_match('/test.+123/U', $subject, $matches); //懒惰模式var_dump($matches);
로그인 후 복사

공통 수정 모드:

U 게으른 일치

i 영문자의 대소문자 무시
x 정규 표현식의 공백 문자 무시
s 메타 문자 '.'는 개행 문자를 포함한 모든 문자와 일치합니다.

공통 기능 preg_match

정규식 일치 수행

preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] ) : int
로그인 후 복사

pattern: 패턴, 문자열 유형을 검색합니다. 제목: 입력 문자열. match: match 매개변수가 제공되면 검색 결과로 채워지며, 데이터 구조는 1차원 배열입니다. flags: 검색 결과의 0번째 요소를 일치하는 문자열로 사용하고, 첫 번째 요소를 해당 오프셋(위치)으로 사용하여 PREG_OFFSET_CAPTURE로 설정할 수 있습니다. 오프셋: 대상 문자열의 시작 위치부터 검색이 시작됩니다.

반환 값: 일치 수

preg_match_all 함수와 유사하며 매개 변수는 preg_match와 일치합니다.

차이:

preg_match: 한 번만 일치하며 검색 구조 일치의 데이터 결과는 1차원 배열입니다 preg_match_all: 모두 일치 , 검색 결과 일치 항목의 데이터 구조는 2차원 배열입니다.

preg_replace

정규식 검색 및 대체를 수행하고 반환 값은 대체된 문자열

preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] ) : mixed
로그인 후 복사

pattern: 검색할 패턴입니다. 문자열이거나 문자열 배열일 수 있습니다. replacement: 교체에 사용되는 문자열 또는 문자열 배열 subject: 검색하고 교체할 문자열 또는 문자열 배열. 제한: 최대 교체 수입니다. 기본값은 -1(무제한)입니다. count: 교체 횟수.

preg_filter 함수와 유사하며 매개변수는 preg_replace와 동일합니다

차이점(차이는 일치를 위해 배열을 사용할 때만 볼 수 있음): preg_replace: 대체 여부에 관계없이 모든 결과를 반환합니다. preg_filter: 일치하는 결과만 반환합니다.

preg_split

정규 표현식으로 문자열을 구분하세요

preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] ) : array
로그인 후 복사

$pattrn:用于搜索的模式,字符串形式。subject:输入字符串limit:将限制分隔得到的子串最多只有limit个,返回的最后一个 子串将包含所有剩余部分。flags:有以下标记的组合:
-- 1. PREG_SPLIT_NO_EMPTY: 返回分隔后的非空部分。
-- 2. PREG_SPLIT_DELIM_CAPTURE: 用分隔符'()'括号把匹配的捕获并返回。
-- 3. PREG_SPLIT_OFFSET_CAPTURE: 匹配返回时将会附加字符串偏移量

PREG_SPLIT_DELIM_CAPTURE这个参数可能比较难明白,举个例子看看:

Copy$subject = "1a23b";  
$a = preg_split('/[\d]/', $subject, -1, PREG_SPLIT_NO_EMPTY);  
var_dump($a);  
$a = preg_split('/([\d])/', $subject, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); 
var_dump($a);
로그인 후 복사

输出如下:

array (size=2)
0 => string 'a' (length=1)
1 => string 'b' (length=1)
array (size=5)
0 => string '1' (length=1)
1 => string 'a' (length=1)
2 => string '2' (length=1)
3 => string '3' (length=1)
4 => string 'b' (length=1)

preg_grep

返回匹配模式的数组条目

preg_grep ( string $pattern , array $input [, int $flags = 0 ] ) : array
로그인 후 복사

$pattern:要搜索的模式,字符串形式$input:输入数组flags:如果不设置则返回匹配的数目,设置PREG_GREP_INVERT则返回不匹配的数目。

preg_quote

转义正则表达式字符,返回为转义后的字符串

preg_quote ( string $str [, string $delimiter = NULL ] ) : string

str:输入字符串delimiter:需要转义的字符串

위 내용은 일반적으로 사용되는 PHP 정규식 및 문법 주석 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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