正则表达式

界定符

表示一个正则表达式的开始和结束
一般在php中 使用 / 如 /[0-9]/或者#如#[0-9]#作为正则表达式的界定符

原子

正则表达式的最小匹配单位,是unicode中的一个字符

  • 不可见原子
    • 空格
    • 回车 \r
    • 换行符 \n
    • 制表符 \t

元字符

  • | 匹配两个或者多个分支选择
  • [ ] 匹配方括号中的任意一个字符
  • [^ ] 匹配除方括号内字符的任意字符
  • 原子集合
    • . 匹配除换行符之外的任意字符
    • \d 匹配任意一个十进制数字,即[0-9]
    • \D 匹配任意一个非十进制数字,即[^0-9]
    • \s 匹配一个不可见原子
    • \S 匹配一个可见原子
    • \w 匹配一个数字字母下划线
    • \W 匹配一个非数字字母下划线

量词(连续出现)

  • {n} 表示其前面的原子恰好出现n次
  • {n,} 表示其前面的原子至少出现n次
  • {n,m} 表示其其前面的原子出现n到m次
  • * 匹配0次1次或多次其之前的原子,即{0,}
  • + 匹配1次或多次其之前的原子,即{1,}
  • ? 匹配0次或者一次其之前的原子,即{0,1}

边界控制

  • ^ 限制字符串以其之后的原子开头
  • $ 限制字符串以其之前的原子结束
    /^Duang~$/匹配以D开头并且以~结尾

模式单元

  • () 把括号里面的正则表达式当做一个原子来看待

修正模式

  • U–懒惰匹配

    当匹配的内容有歧义时,贪婪匹配取最长的,懒惰模式取最短的

    1
    2
    3
    4
    5
    6
    7
    $pattern = '/imooc.+123/U';//'前的U代表修正模式是懒惰模式,如果没有U默认为贪婪模式
    $subject = 'I love imooc__123123123123123123';
    $matches = array();
    preg_match($pattern,$subject,$matches);

    //打印结果imooc__123
    //去掉U 打印结果imooc__123123123123123123
  • i-忽略大小写

  • x-忽略空白

  • s–让元字符. 匹配包括换行符在内的所有字符

评论