PHP 정규식 학습 노트 공유:
1. 정규식을 만듭니다
$regex = '/d/i';
여기서 단어가 문자열이라는 점을 제외하면 JavaScript의 첫 번째 방법과 약간 비슷합니다.
2. 정규식의 특수문자
특수 문자에는 . * ? [ ^ ] $ ( ) { } >
3. 정규식의 함수8가지 방법이 있습니다preg_match 및 preg_match_all, preg_replace 및 preg_replace_callback, preg_grep, preg_split, preg_last_error 및 preg_quote.
preg_match:
정규식 일치 수행
패턴 일치 개수를 반환합니다
. preg_match()는의 첫 번째 일치 이후 검색을 중지하므로 해당 값은 0번(일치 없음) 또는 1번입니다.
$subject = "dd133aa2"; $pattern = '/\d+/'; preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE); print_r($matches);
"전역" 정규식 일치 수행
전체 일치 수(0일 수도 있음)를 반환하거나, 오류가 발생하면 FALSE를 반환합니다.
아래 코드의 $subject 및 $pattern은 위와 동일하며, 유일한 차이점은 preg_match가 preg_match_all로 대체된다는 점입니다.
preg_match_all($pattern, $subject, $matches, PREG_OFFSET_CAPTURE); print_r($matches);
preg_replace:
정규식 검색 및 바꾸기 수행
subject가 배열이면 preg_replace()는 배열을 반환하고, 그렇지 않으면 문자열을 반환합니다.
일치하는 항목이 있으면 대체된 제목이 반환되고, 그렇지 않으면 변경되지 않은 제목이 반환됩니다. 오류가 발생하면 NULL이 반환됩니다.코드에서 $subject는 두 개의 문자열 세트로 구성된 배열입니다. 다음으로 여러 숫자는 대문자 "Z"로 대체됩니다.
$subject = array("dd133aa2", "kk1ff3"); $pattern = '/\d+/'; $result = preg_replace($pattern, 'Z', $subject); print_r($result);
정규식 검색을 수행하고 "콜백"을 사용하여 바꿉니다.
대체 문자열을 계산하기 위해 대체 대신 콜백을 지정할 수 있다는 점을 제외하면 이 함수의 동작은 반환된 결과를 포함한 다른 측면에서 preg_replace()와 동일합니다.
다음 코드도 대문자 "Z"로 대체됩니다. 콜백 함수의 각 $matches 내용은 코드에서 주석 처리된 부분입니다. 첫 번째는 133이고 두 번째는 2입니다.
$subject = "dd133aa2"; $pattern = '/\d+/'; $result = preg_replace_callback($pattern, function($matches) { //$matches [0] => 133 //$matches [0] => 2 return 'Z'; }, $subject); print_r($result);
패턴과 일치하는 배열 항목을 반환합니다
입력의 키를 로 사용하여 인덱싱된 배열
을 반환합니다.아래 샘플 코드에서는 $subject 배열에 숫자가 포함되지 않은 "ddsdfd"를 추가했습니다. 매칭을 수행할 때 숫자가 없는 항목을 필터링했습니다.
$result2가 출력하는 것은 정반대입니다. 필터링된 것을 출력하지만 키는 여전히 0이 아니라 2입니다.
preg_split:
通过一个正则表达式分隔字符串
返回一个使用 pattern 边界分隔 subject 后得到 的子串组成的数组。
下面代码中,我将$pattern中的表达式加了括号,为了在$result2中捕获到。
$subject = "dd133aa2cc"; $pattern = '/(\d+)/'; $result = preg_split($pattern, $subject); $result2 = preg_split($pattern, $subject, null, PREG_SPLIT_DELIM_CAPTURE); print_r($result); print_r($result2);
preg_last_error:
返回最后一个PCRE正则执行产生的错误代码
preg_match('/(?:\D+|<\d+>)*[!?]/', 'foobar foobar foobar'); $result = preg_last_error();//PREG_BACKTRACK_LIMIT_ERROR 调用回溯限制超出 print_r($result);
preg_quote:
转义正则表达式字符
返回转义后的字符串。
下面的代码中,$subject中有两个需要转义的字符,“.”和“?”。
将$result打印出后是“dd\.a\?a2cc”,而在$result2中,多加了个参数“a”,这样的话“a”也会被转义,“dd\.\a\?\a2cc”
$subject = "dd.a?a2cc"; $result = preg_quote($subject); $result2 = preg_quote($subject, 'a'); print_r($result); print_r($result2);
4、模式修正符
以上就是关于php正则表达式的全部内容介绍,希望对大家的学习有所帮助。