正则表达式 Regular Express
标签(空格分隔): 正则表达式 PHP
认识正则表达式
正则表达式就是用某种模式去匹配一类字符串的一种公式。通俗来讲,就是一系列匹配规则。
PHP中的正则函数
- PCRE库提供的函数, 以
preg_
为前缀命名。 - POSIX扩展提供的函数,以
ereg_
为前缀命名。
组成
分隔符
表达式
修饰符
- 分隔符:可以是除了字母、数字、反斜线及空白符以外的任何字符
- 表达式:由一些特殊字符和非特殊字符组成。
- 修饰符:用于开启或者关闭某种功能。
元字符(Meta-Characters)
是正则表达式中具有特殊意义的字符
常用元字符
元字符 | 描述 |
---|---|
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母、数字或下划线或汉字 |
\s | 匹配任意空白符 |
\d | 匹配数字 |
\b | 匹配单词的开始或结束 |
^ | 匹配字符的开始 |
$ | 匹配字符的结束 |
- | 表示范围 |
[ ] | 匹配括号中的任意一个字符 |
*、+、? | 量词 |
量词
限定符 | 描述 |
---|---|
* | 重复0次或更多次 |
+ | 重复1次或更多次 |
? | 重复0次或1次 |
{n} | 重复n次 |
{n,} | 至少重复n次 |
{n,m} | 重复n次到m次 |
正则表达式匹配规则
- 字符组
[0-9]
- 转义
\\
\{
\}
- 反义
字符 | 描述 |
---|---|
\W | 匹配任意不是字母、数字、下划线、汉字的字符 |
\S | 匹配任意不是空白的字符 |
\D | 匹配任意非数字的字符 |
\B | 匹配不是单词开头或结束的位置 |
[^x] | 匹配除x以外的任意字符 |
4. 分支 就是存在多种可能的匹配情况。[ch]at=(c|h)at
5. 分组
类别 | 代码/语法 | 描述 |
---|---|---|
捕获 | (exp) | 匹配exp,并捕获文本到自动命名的组里 |
(?<name>exp) | 匹配exp,并捕获文本到名称为name的组里,也可写成(?’name’exp) | |
(?:exp) | 匹配exp,不捕获匹配的文本,也不给次分组分配组号 | |
零宽断言 | (?=exp) | 匹配exp前面的位置 |
(?<=exp) | 匹配exp后面的位置 | |
(?!exp) | 匹配后面跟的不是exp的位置 | |
(?<!exp) | 匹配前面不是exp的位置 |