正则表达式
- 简单介绍正则表达式
- 正则表达式就是描述字符串排列模式的一种自定义语法规则
- 如果可以使用字符串处理函数完成任务,就不要使用正则表达式
- 有一些复杂性的操作,只能用正则表达式
- 正则表达式也成为一种模式表达式
- 正则表达式就是通过具有特定规则的模式,在于输入的字符串信息进行比较、分割、查找、替换等操作
- 正则表达式的特点
- 正则表达式也是一个字符串
- 由具有特殊意义的字符组成的字符串
- 具有一定编写规则,也是一种模式
- 看做是一种编程语言:是用一些特殊字符,按照规则编写出来的一个字符串,行成一种模式-正则表达式
- 注意:如果正则表达式不和函数一起使用,则他就是一个字符串,如果将正则表达式放到某个函数中使用,才能发挥正则表达式的真正作用。
- php中提供了两天正则表达式函数库
- posix扩展正则表达式 ereg
- perl兼容正则表达式 preg 推荐使用 效率较高
- 正则表达式的语法
- 正则定界符
- 正则表达式中的原子
- 正则表达式中的元字符
- 正则表达式的模式修正符
- 正则定界符
- 正则的定界符就是用来声明正则表达式边界的符号。正则表达式常用的边界符是'/',实际上任何非数字字母以及反斜杠'\'之外的任意字符都可以做正则表达式分边界符使用.
- 正则表达式的原子
- 组成正则表达式的最小的单位就是原子
- 正则的数字字母都是源自,大部分不可见的字符也是原子,例如:\n\r\t...这些转译字符都是元素
- \d 表示0-8之间一个数字
- \D 表示除了0-9之外的任意一个字符
- \s 表示匹配任意一个空白字符包括\n\r\t
- \S表示除了空白符或者转义字符之外的任意一个字符
- \w表示大小写字母数字以及下划线当中的任意一个字符
- \W表示除了大小写字母数字以及下划线之外的任意一个字符
- . 匹配除了\n之外的任意一个字符
- 元字符(原子修饰符)
- []原子列表
- 表示在指定的字符中选取一个原子
- 例子:[5-9]表示5,6,7,8,9连续的字符允许缩写为开始字符-结束字符
- [^] 排除列表
- 原子数量修饰符
- ?表示前面的原子出现0次或者1次
- +表示前面的原子出现1系或者多次
- *表示前面原子出现0次或者多次
- 原子数量修饰列表
- {m,n}表示前面的原子最小出现m次,最多出现n次
- {m,}表示前面的原子最少出现m次.
- {m}表示前面的原子只能出现m次
- 字符串便捷修饰符
- ^表示以指定字符开头的内容
- $表示以指定字符结尾的内容
- 注意:如果要使用^和$可以匹配每一行的开始和结束部分,需要使用后面学习模式修正符m 例子:/^asdf$/m
- 选择修饰符
- 模式单元()
- 修改优先级
- 将多个原子视为一个原子,好处:可以使用原子数量修饰符
- 将匹配到的括号中的内容暂时存到内存当中
- 如果使用()仅仅为了模拟一个原子使用原子数量修饰符,那么可以在括号的开始处使用?:来解除存于内容的作用,提高效率
- 可以将括号的内容在函数的辅助下做反向应用操作
- 例子:\d{15}|\d{18}|\d{17}[xX] 身份证
- 老版本的身份证15数字
- 新版本18位数字 | 17位数字+最后一位是X字母
- \d{3}-\d{8}|\d{4}-\d{7} 010-12345678
- [a-zA-Z]|+:\/\/[^\s]+ http://www.baidu.com
- 模式修正符
- i 忽略大小写
- x 忽略正则表达式的空白
- s 使.这个原子符匹配\n这个字符
- S加速匹配
- U 改变贪婪模式
- 改变贪婪模式,程序默认是贪婪的, 匹配最远的结束为止,我们可以在正则中更实用.*?匹配任意字符的同时使用非贪婪模式
- 注意:如果此时程序是贪婪模式,使用U后, 则程序变为非贪婪模式,如果此时程序是非贪婪模式,使用U后,程序变为贪婪模式
- 正则表达式的函数
- preg_grep()返回与模式匹配的数组单元
- 参数1:正则表达式
- 参数2:要匹配的数组
- 参数3:可选参数 默认false.设置为true表示返回与模式匹配相反的数组单元
- 返回值:返回与模式匹配的数组单元
- preg_match() 进行一次正则匹配
- 参数1:正则表达式
- 参数2:要匹配的字符串
- 参数3:可选参数,返回正则表达式匹配的内容
- 返回值:成功返回1,失败返回0
- preg_split() 用正则表达式分割字符串
- 参数1:正则表达式
- 参数2:要分割的字符串
- 返回值:返回分割后的数组
- preg_replace() 执行正则表达式的替换
- 参数1:要查找正则表达式
- 参数2:要替换的内容
- 参数3:在哪里进行替换操作(数组还是字符串)
- 返回值:返回替换后的数组或者字符串
posted on 2018-05-28 23:29 nothingMan 阅读(99) 评论(0) 收藏 举报
浙公网安备 33010602011771号