기본 구문
구분 기호:
정규 표현식의 시작과 끝을 식별합니다. '/', '#' 또는 '{ }'를 사용합니다. '{ }' 구문도 정규 표현식일 수 있기 때문입니다. 표현식 혼동을 피하기 위해 수식 연산자를 사용하지 않는 것이 좋습니다. 권장 사용법은 다음과 같습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!