MENU

PHP正则

• August 14, 2018 • Read: 111 • Code

[title]原子概念[/title]

原子指的是php正则表达式中不可再分的基本单元

如:php、p等等

原子能不能再分是根据需求来定的

通用字符类型作原子

\d 匹配任意一个数字 [0-9]
\D 匹配任意一个非数字 [^0-9]
\w 匹配任意一个数字字母下划线 [0-9a-zA-Z_]
\W 匹配任意一个非数字字母下划线 [^0-9a-zA-Z_]
\s 匹配任意一个空白字符 [\n\f\r\t\v]
\S 匹配任意一个非空白字符 [^\n\f\r\t\v]

元字符

. 匹配除换行以外的任意字符
| 匹配多个分支选择(相当于和)

边界限制符

^ 匹配一行的开头
$ 匹配一行的结尾
\b 单词边界(只对英语单词有用)
\B 非单词边界

量词

* 重复前一个零次或多次(>=0)
+ 重复前一个一次或多次
? 重复前一个零次或一次
{n} 重复前一个n次
{n,} 重复前一个n次或更多次
{n,m} 重复前一个n到m次

模式单元

():模式单元可以分组、限制多选结构、捕获文本

禁止贪婪

?当这个问号字符紧跟在任何一个其他限制字符(*, +, {n,}, {n, m})后面时,匹配模式是非贪婪的。

U模式修正符

反向引用

反向引用:对模式单元中捕获的文本内容的引用

UTF-8编码下汉字Unicode编码范围:\u4e00-\u9fa5

捕获的文本存储在临时缓冲区中,缓冲区编号范围为1-99,反向引用格式为:\+编号

非捕获元字符 "?:"

定界符

经常使用的分隔符是正斜线(/)、hash符号(#)以及取反符(~)。

如果分隔符需要在模式内进行匹配,它必须使用反斜线进行转义。

模式修正符

U 禁止贪婪
i 不区分大小写
x 忽略模式中的空白
s 将字符视为单行,"."也能匹配换行
m 将字符串视为多行,"^", $"匹配行首行尾

[title]正则函数[/title]

1、preg_match($pattern, $subject, $matches)

$pattern:要搜索的模式

$subject:输入字符串

$matches:如果提供了参数matches,它将被填充为搜素结果

 

2、preg_match_all()

基本上同上,不同的是$matches:多维数组,作为输出参数输出所有匹配结果

 

3、preg_replace($pattern, $replacement, $subject)

$pattern 要搜素的模式

$replacement 要替换的字符串或字符串数组

$subject 要进行搜索和替换的字符串或字符串数组

 

4、preg_replace_callback

与上一个不一样的地方在第二个参数$callback替代了$replacement进行字符串的替换,$callback是一个回调函数

 

5、preg_filter:与preg_replace相似,不同的地方在于,它只返回与目标相匹配的结果

 

6、preg_grep($pattern, $input, $flags)

返回给定数组中input中与模式pattern匹配的元素组成的数组

$pattern 要搜索的模式

$input 输入数组

$flags PREG_GREP)INVERT取反

 

7、preg_quote

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

$str 输入字符串

$delimiter 如果指定了可选参数delimiter,它也会被转义