正则表达式

  • 简单介绍正则表达式
    • 正则表达式就是描述字符串排列模式的一种自定义语法规则
    • 如果可以使用字符串处理函数完成任务,就不要使用正则表达式
    • 有一些复杂性的操作,只能用正则表达式
    • 正则表达式也成为一种模式表达式
    • 正则表达式就是通过具有特定规则的模式,在于输入的字符串信息进行比较、分割、查找、替换等操作


  • 正则表达式的特点
    • 正则表达式也是一个字符串
    • 由具有特殊意义的字符组成的字符串
    • 具有一定编写规则,也是一种模式
    • 看做是一种编程语言:是用一些特殊字符,按照规则编写出来的一个字符串,行成一种模式-正则表达式
    • 注意:如果正则表达式不和函数一起使用,则他就是一个字符串,如果将正则表达式放到某个函数中使用,才能发挥正则表达式的真正作用。


  • 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)    收藏  举报