正则表达式学习整理

 

简单字符匹配

  • \b    :元字符,代表单词的开始或结尾,也就是单词的分界处,它只匹配一个位置
  • .        :匹配除换行符以外的任意字符
  • *      :指定前边的内容可以连续重复使用任意次
  • \d     :元字符,匹配一位数字
  • {}       :大括号中为数字,规定大括号前面的字符重复的次数

              {n}:重复n次

            {n,}:重复n次或更多

       {n,m}:重复的次数不能少于n次,不能多于m次

  • \s     :匹配任意的空白符
  • \w    :匹配字母或数字或下划线或汉字
  • +     :指定前面的内容可以重复使用1次或更多次
  • ^      :匹配字符口串的开始,只匹配一个位置
  • $       :匹配字符串的结束,只匹配一个位置
  • \       :字符转义
  • ?       :指定前面的内容重复0次或1 次
  • []       :字符类,指定一个字符的范围

       [0-9] 匹配一位数字

       [aeiou]匹配任意一个英文元间字母

 

分枝条件

指的是有几种规则,满足其中任意一种规则都当成匹配

用|把不同的规则分隔开

使用分枝条件时,要注意各个条件的顺序,匹配分枝条件时,将会从左到右地测试每个条件,如果满足了某个分枝的话,就不会去再匹配其它的条件

 

分组

用小括号将需要的内容括起来,作为一个组进行操作

(\d{1,3}\.){3}\d{1,3}匹配一个简单的IP地址

((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?) 匹配一个正确的IP地址

反义

  • \W    :匹配任意不是字母,数字,下划线,汉字的字符
  • \S      :匹配任意不是空白符的字符
  • \D     :匹配任意非数字的字符
  • \B     :匹配任意不是单词开头或结尾的位置
  • [^x]  :匹配除了x以外的任意字符

      [^aeiou]:匹配除了aeiou五个字母以外的任意字符

 

 后向引用

每一个分组会自动拥有一个组号,

从左向右,以分组的左括号为标志,第一个分组的组号为1,第二为2,以次类推

\1 代表分组1匹配的文本

指定组名:

      语法:(?<word>\w+)或 (`word`\w)

  反向引用这个分组捕获的内容

      语法:\k<word>

  (?:exp)    :匹配exp,不捕获匹配的文本,也不给此分组分配组号

零宽断言

  • (?=exp)  :匹配后面是exp的位置
  • (?<=exp)  :匹配前面是exp的位置
  • (?!exp)       :匹配后面不是exp的位置
  • (?<!exp)     :匹配前面不是exp的位置

 注释

       语法:(?#comment)

 

贪婪与懒惰

       当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符

              懒惰限定符

  • *?              重复任意次,但尽可能少重复
  • +?              重复1次或多次,但尽可能少重复
  • ??              重复0次或1次,但尽可能少重复
  • {n,m}?      重复n到m次,但尽可能少重复
  • {n,}?          重复n次以上,但尽可能少重复

模式修正符

  • i :  进行匹配时不区分大小写
  • m :将模式视为多行,使用^和$表示任何一行都可以以正则表达式开始或结束
  • s:  如果没有使用这个模式修正符号,元字符中的”.”默认不能表示换行符号,将字符串视为单行
  • x:  表示模式中的空白忽略不计
  • e:  正则表达式必须使用在preg_replace替换字符串的函数中时才可以使用
  • A:  以模式字符串开头,相当于元字符^
  • Z:  以模式字符串结尾,相当于元字符$
  • U: 正则表达式的特点:就是比较“贪婪”,使用该模式修正符可以取消贪婪模式

应用例子:

  •   php中utf-8编码下用正则表达式匹配汉字的最终正确表达式:
      /^[\x{4e00}-\x{9fa5}]+$/u
  •      匹配密码(大小写字母和数字的组合,不能包含特殊字符)
         ^(?=[a-zA-Z]*\d)(?=[0-9]*[a-zA-Z])[a-zA-Z0-9]{6,12}$
posted @ 2013-02-18 15:44  cl-龙卷风  阅读(285)  评论(0编辑  收藏  举报