您的位置:首页 > 编程语言 > PHP开发

PHP中的正则表达式及PCRE函数

2015-09-01 14:03 579 查看

PCRE

PHP有两种使用不同的方式来使用正则表达式:PCRE(Perl兼容表示法,preg_*)函数 和 POSIX(POSIX 扩展表示法,ereg_*) 函数。幸运的是,POSIX 家族函数从 PHP 5.3.0 开始就被弃用了。

正则表达式

界定符

经常使用的分隔符是正斜线(/)、hash符号(#) 以及取反符号(~)。下面的例子都是使用合法分隔符的模式

/foo bar/
#^[^0-9]$#
+php+
%[a-zA-Z0-9_-]%
{this is a pattern}


可以在结束分隔符后面增加模式修饰符

元字符

一些字符被赋予特殊的涵义,使其不再单纯的代表自己,模式中的这种有特殊涵义的编码字符称为
元字符


元字符描述
\一般用于转义字符
^断言目标的开始位置(或在多行模式下是行首)
$断言目标的结束位置(或在多行模式下是行尾)
.匹配除换行符外的任何字符(默认)
[开始字符类定义
]结束字符类定义
|开始一个可选分支
(子组的开始标记
)子组的结束标记
?作为量词,表示 0 次或 1 次匹配。位于量词后面用于改变量词的贪婪特性。 (查阅量词)
*量词,0 次或多次匹配
+量词,1 次或多次匹配
{自定义量词开始标记
}自定义量词结束标记
模式中方括号内的部分称为“字符类”。 在一个字符类中仅有以下可用元字符

元字符描述
\转义字符
^仅在作为第一个字符(方括号内)时,表明字符类取反
-标记字符范围

字符类

方括号中的内容就是字符类

有一些预定义字符类

字符类描述
\d任意十进制数字
\D任意非十进制数字
\h任意水平空白字符(since PHP 5.2.4)
\H任意非水平空白字符(since PHP 5.2.4)
\s任意空白字符
\S任意非空白字符
\v任意垂直空白字符(since PHP 5.2.4)
\V任意非垂直空白字符(since PHP 5.2.4)
\w任意单词字符
\W任意非单词字符

原子

可见原子

abc


不可见原子

\n


量词

量词
*等价于 {0,}
+等价于 {1,}
?等价于 {0,1}

断言

简单的断言代码有\b、\B、 \A、 \Z、\z、 ^、$

前瞻断言

从当前位置向前测试

(?=)

(?!)


\w+(?=;)
匹配一个单词紧跟着一个分号但是匹配结果不会包含分号

后瞻断言

从当前位置向后测试

(?<=)

(?<!)


(?<!foo)bar
用于查找任何前面不是 ”foo” 的 ”bar”

模式修饰符

模式修饰符
U这个修饰符逆转了量词的”贪婪”模式,使量词默认为非贪婪的
i大小写不敏感匹配
x忽略空白
s点号元字符匹配所有字符,包含换行符。如果没有这个修饰符,点号不匹配换行符

PCRE 函数

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 — 通过一个正则表达式分隔字符串
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: