# preg_filter — 执行一个正则表达式搜索和替换
preg_grep — 返回匹配模式的数组条目
# preg_last_error — 返回最后一个PCRE正则执行产生的错误代码
preg_match_all — 执行一个全局正则表达式匹配
preg_match — 执行匹配正则表达式
# preg_quote — 转义正则表达式字符
# preg_replace_callback_array — Perform a regular expression search and replace using callbacks
preg_replace_callback — 执行一个正则表达式搜索并且使用一个回调进行替换
preg_replace — 执行一个正则表达式的搜索和替换
preg_split — 通过一个正则表达式分隔字符串

手册地址:https://www.php.net/manual/zh/ref.pcre.php

模式修饰符
https://www.php.net/manual/zh/reference.pcre.pattern.modifiers.php

preg_grep
$arr = [1, \'a\', \'2\', \'e\', 3];
$preg = \'/\d/\';
$arr = preg_grep($preg, $arr);

/*
Array
(
    [0] => 1
    [2] => 2
    [4] => 3
)
*/

 

preg_match && preg_match_all

preg_match : preg_match()在第一次匹配后 将会停止搜索
preg_match_all : 在第一个匹配找到后, 子序列继续从最后一次匹配位置搜索

// 加深贪婪模式印象
$td = \'<td>td1 content</td><td>td2 content</td>\';
$tdRegx1 = \'/<td>(.*)<\/td>/\';
preg_match($tdRegx1, $td, $tdMatch);
/*
Array
(
    [0] => <td>td1 content</td><td>td2 content</td>
    [1] => td1 content</td><td>td2 content
)
*/

$tdRegx2 = \'/<td>(.*)<\/td>/U\';
// $tdRegx1 = \'/<td>(.*?)<\/td>/\';
preg_match($tdRegx2, $td, $tdMatch2); print_r($tdMatch2); /* Array ( [0] => <td>td1 content</td> [1] => td1 content ) */

  

?=… 正先行断言

正先行断言, 表示第一部分表达式之后必须跟着
“(T|t)he(?=\sfat)” => The fat cat sat on the mat.

 

?!… 负先行断言

负先行断言 ?! 用于筛选所有匹配结果, 筛选条件为 其后不跟随着断言中定义的格式
“(T|t)he(?!\sfat)” => The fat cat sat on the mat.

 

?<= … 正后发断言
正后发断言 记作(?<=…) 用于筛选所有匹配结果, 筛选条件为 其前跟随着断言中定义的格式. 例如, 表达式 (?<=(T|t)he\s)(fat|mat) 匹配 fat 和 mat, 且其前跟着 The 或 the.

“(?<=(T|t)he\s)(fat|mat)” => The fat cat sat on the mat

 

?<!… 负后发断言
负后发断言 记作 (?<!…) 用于筛选所有匹配结果, 筛选条件为 其前不跟随着断言中定义的格式. 例如, 表达式 (?<!(T|t)he\s)(cat) 匹配 cat, 且其前不跟着 The 或 the.
“(?<!(T|t)he\s)(cat)” => The cat sat on cat.

 


 

常用的正则表达式

1、匹配中文

$preg = \'/[\x{4e00}-\x{9fa5}]/u\';

 

版权声明:本文为hanpengyu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/hanpengyu/p/11355515.html