php有两种使用不同的方式来使用正则表达式:pcre(perl兼容表示法,preg_*)函数 和 posix(posix 扩展表示法,ereg_*) 函数。幸运的是,posix 家族函数从 php 5.3.0 开始就被弃用了。
经常使用的分隔符是正斜线(/)、hash符号(#) 以及取反符号(~)。下面的例子都是使用合法分隔符的模式
<code>/foo bar/
#^[^0-9]$#
+php+
%[a-zA-Z0-9_-]%
{this is a pattern}
</code>可以在结束分隔符后面增加模式修饰符
一些字符被赋予 特殊的涵义,使其不再单纯的代表自己,模式中的这种有特殊涵义的编码字符 称为 元字符。
| 元字符 | 描述 |
|---|---|
| 一般用于转义字符 | |
| ^ | 断言目标的开始位置(或在多行模式下是行首) |
| $ | 断言目标的结束位置(或在多行模式下是行尾) |
| . | 匹配除换行符外的任何字符(默认) |
| [ | 开始字符类定义 |
| ] | 结束字符类定义 |
| 开始一个可选分支 | |
| ( | 子组的开始标记 |
| ) | 子组的结束标记 |
| ? | 作为量词,表示 0 次或 1 次匹配。位于量词后面用于改变量词的贪婪特性。 (查阅量词) |
| * | 量词,0 次或多次匹配 |
| + | 量词,1 次或多次匹配 |
| { | 自定义量词开始标记 |
| } | 自定义量词结束标记 |
模式中方括号内的部分称为“字符类”。 在一个字符类中仅有以下可用元字符
| 元字符 | 描述 |
|---|---|
| 转义字符 | |
| ^ | 仅在作为第一个字符(方括号内)时,表明字符类取反 |
| - | 标记字符范围 |
方括号中的内容就是字符类
立即学习“PHP免费学习笔记(深入)”;
有一些预定义字符类
| 字符类 | 描述 |
|---|---|
| d | 任意十进制数字 |
| D | 任意非十进制数字 |
| h | 任意水平空白字符(since PHP 5.2.4) |
| H | 任意非水平空白字符(since PHP 5.2.4) |
| s | 任意空白字符 |
| S | 任意非空白字符 |
| 任意垂直空白字符(since PHP 5.2.4) | |
| V | 任意非垂直空白字符(since PHP 5.2.4) |
| w | 任意单词字符 |
| W | 任意非单词字符 |
如abc
如
| 量词 | |
|---|---|
| * | 等价于 {0,} |
| + | 等价于 {1,} |
| ? | 等价于 {0,1} |
简单的断言代码有、B、 A、 Z、z、 ^、$
从当前位置向前测试
(?=)
(?!)
w+(?=;)匹配一个单词紧跟着一个分号但是匹配结果不会包含分号
从当前位置向后测试
(?
<code>(?
<code>(?用于查找任何前面不是 ”foo” 的 ”bar”
<code>模式修饰符
<code>模式修饰符
|
|
|---|---|
<code>U |
<code>这个修饰符逆转了量词的”贪婪”模式,使量词默认为非贪婪的 |
<code>i |
<code>大小写不敏感匹配 |
<code>x |
<code>忽略空白 |
<code>s |
<code>点号元字符匹配所有字符,包含换行符。如果没有这个修饰符,点号不匹配换行符 |
<code>… |
<code>PCRE 函数<code><code><code>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 — 通过一个正则表达式分隔字符串 </code></code></code>
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号