Rumah >pembangunan bahagian belakang >tutorial php >Php中的正则表达式
这篇文章主要介绍了关于Php中的正则表达式,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
Ø 正则表达式的了解
n 正则表达式就是描述字符串排列模式的一种自定义语言规则
n 如果可以使用字符串处理函数完成的任务,就不要使用正则表达式
n 有一些复杂性的操作,只能用正则表达式
n 正则表达式也称为一种模式表达式
n 正则表达式就是通过具有特定规则的模式,在与输入的字符串信息进行比较、分割、查找、替换等操作。
Ø 正则表达式的特点
n 正则表达式也是一个字符串
n 由具有特殊意义的字符串组成的字符串
n 具有一定编写规则,也是一种模式
n 看做是一种编程语言:是用一些特殊字符,按照规则编写出来一个字符串,形成一种模式
注意:如果正则表达式不和函数一起使用,则就是一个字符串,如果正则表达式放到某个函数中使用,才能发挥正则表达式的真正作用。
Ø PHP中提供了两套正则表达式函数库
Posix扩展正则表达式ereg_开头的函数
perl兼容正则表达式preg_开头的函数
推荐使用prel 兼容正则表达式函数库
Ø 正则定界符
Ø 正则表达式中的原子
Ø 正则表达式中的元字符
Ø 正则表达式的模式修正符
正则的定界符就是用来声明正则表达式边界的符号。
正则表达式常用的边界符为 /,实际上任何非数字字母以及反斜线\ 之外的任意字符都可以做正则表达式的边界符。
注意:一个完整的正则表达式有两个边界符
n 一个是字符串类型的引号边界符 ''
n 一个是正则表达式的边界符 //(一般用/)
n 整体就是 '//'
组成正则表达式的最小单位就是原子
正则的数字字母都是原子,大部分不可见的字符也是原子。
例如:\n\r\t...这些转译字符都是元素
Ø 正则中原子
\d 表示 0-9之间的一个数字
\D 表示除了0-9之间的任意一个字符
\s 表示匹配任意一个空白字符包括 \n\r\t..
\S 表示除了空白符或者转译字符之外的任意一个字符
\w 表示大小写字符数字以及下划线当中任意一个字符
\W 表示除了大小写字母数字以及下划线之外的任意一个字符
Ø [] 原子列表
表示在指定的字符中选择一个原子
例如:[5-9] 表示5 6 7 8 9连续得字符允许缩写为:[开始字符 -结束字符]
Ø [^] 排除列表
例如:[^4 ] 表示除了4之外的任意一个字符都可以
Ø 用元字符(原子修饰符)来模拟原子
\d [0-9] \D [^0-9]
\s [\n\r\t] \S[^\n\r\t]
\w[a-zA-Z0-9] \W[^a-zA-Z0-9]
Ø 原子数量修饰符
? 表示前面的原子出现0次或者1次
+ 表示前面的原子出现1次或者多次
* 表示前面的原子出现0次或者多次
Ø 原子数量修饰列表
n {m,n} 表示前面的原子最小出现m次,最多出现n次
n {m,}表示前面的原子最少出现m次
n {m} 表示前面的原子只能出现m次
Ø 原子数量修饰列表模拟数量修饰符
? {0,1}
+ {1,}
* {0,}
Ø 字符串边界修饰符
^ 表示以指定字符开头的内容
$ 表示以指定字符结尾的内容
注意:
^ $一前一后表示精准修饰限定两者之间的内容是否一致
u 如果要使用^和$ 可以匹配每一行的开始和结束部分,需要使用模拟修正符m
Ø | 选择修饰符
n 或与且类似
Ø () 模式单元
n 改变优先级
n 将多原子视为一个原子,可以使用原子数量修饰符
n 将匹配到的括号中的内容暂时存为内存中
n 如果使用()仅仅为了模拟一个原子使用原子数量修饰符,那么可以在括号的开始处使用?: 来接触存于内容的作用,提高效率
n 可以将括号的内容在函数的辅助下进行反向引用操作
Ø 元字符
.(点)匹配除了\n之外的任意一个字符
Ø i 忽略大小写
Ø x 忽略正则表达式中得空白
Ø s 使用.(元字符)可以匹配到\n
Ø S 加速匹配
Ø U 模式 改变贪婪模式
改变贪婪模式,程序默认是贪婪模式,匹配最远的结束为止,我们可以在正则中使用*?匹配任意字符的同时使用非贪婪模式
注意:如果此时程序为贪婪模式,使用U后,则程序变为非贪婪模式。如果此时程序为非贪婪模式,使用U后,程序变为贪婪模式
Ø preg_grep() 返回与模式匹配的数组单元
@param1:正则表达式
@param2:要匹配的数组
@param3:可选参数默认为false。设置为true表示返回与模式匹配相反的数组单元
返回值:返回与模式匹配的数组单元
Ø preg_match() 进行一次正则匹配适合做查询有没有
@param1:正则表达式
@param2:要匹配的字符串
@param3:可选参数,返回与正则表达式匹配的内容
返回值:成功返回1,失败返回0 1表示匹配的次数
Ø preg_match_all() 进行正则匹配 适合查询有多少
@param1:正则表达式
@param2:要匹配的字符串
@param3:可选参数,返回与正则表达式匹配的内容
返回值:返回匹配的次数,如果没有匹配带则返回0
Ø preg_split() 用正则表达式分隔字符串
@param1:正则表达式
@param2:要分隔的字符串
@param3:返回分隔后的数组
Ø preg_replace() 执行正则表达式的替换
@param1:要查找正则表达式
@param2:要替换的内容
@param3:在哪里进行替换操作(数组还是字符串)
返回值:返回替换后的数组或者字符串
相关推荐:
Atas ialah kandungan terperinci Php中的正则表达式. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!