正则表达式笔记

正则表达式笔记

 

说明:绿色:强调   红色:匹配结果

 

1.贪婪与懒惰

贪婪:   a.*b    aabab

懒惰:   a.*?b   aabab

2.重复

*   :    0到多

+   :    1到多

?   :    01

{n,m} :     n到m

{n,}  :     n到多

{n}   :     n

3.  []      :   单个匹配

4.转义(查找元字符)

\      \.     www.dsdda.com

5.分支(从左至右,懒惰)

|     0\d{2}-\d{8}|0\d{3}-\d{7}    012-1234567899990123-1234567

6.分组 与 向后引用

       后向引用用于重复搜索前面某个分组匹配的文本 从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推

        \b(?<Word>\w+)\b\s+\k<Word>\b    kitty kitty

       

4.常用分组语法

分类

代码/语法

说明

捕获

(exp)

匹配exp,并捕获文本到自动命名的组里

(?<name>exp)

匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)

(?:exp)

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

零宽断言

(?=exp)

匹配exp前面的位置

(?<=exp)

匹配exp后面的位置

(?!exp)

匹配后面跟的不是exp的位置

(?<!exp)

匹配前面不是exp的位置

注释

(?#comment)

这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读

  零宽断言(断言不算分组)

 (?=exp)   \b\w+(?=ing\b)   I'm singing while you're dancing.

   (?<=exp)  (?<=\bre)\w+\b  reading a book

   向零宽断言

(?!exp)  \b((?!abc)\w)+\b   匹配不包含连续字符串abc的单词

(?!exp)

(?<=<(\w+)>).*(?=<\/\1>)   <b>大大</b>

3. 元字符(特殊意义)

\b : 分界,限定位置   \bhi\b    hihi hi hissa

\d : 一位数字         \d       1231215

\w: 一位数字或英文字母

^ :  开始位置

$ :  结束位置

*

+

?

(

)

7.反义字符

\W  匹配一个不是字母,数字,下划线,汉字的字符

\S   匹配一个不是空白符的字符

\D   匹配一个非数字的字符

\B   匹配一个单词开头或结束的位置

8.注释

(?#comment)来包含注释。例如:2[0-4]\d(?#200-249)|25[0-5](?#250-255)|[01]?\d\d?(?#0-199)

要包含注释的话,最好是启用“忽略模式里的空白符”选项,空白字符以及#后面到这一行结束的所有文本都将被当成注释忽略掉。例如,我们可以前面的一个表达式写成这样:

      (?<=    # 断言要匹配的文本的前缀
      <(\w+)> # 查找尖括号括起来的字母或数字(即HTML/XML标签)
      )       # 前缀结束
      .*      # 匹配任意文本
      (?=     # 断言要匹配的文本的后缀
      <\/\1>  # 查找尖括号括起来的内容:前面是一个"/",后面是先前捕获的标签
      )       # 后缀结束

 

 

 

参考:http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html

 

posted on 2014-09-08 19:10  默默前行_huster  阅读(85)  评论(0编辑  收藏  举报

导航