正则表达式笔记

正则表达式笔记

 

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

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.分支(从左至右,懒惰)

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

6.分组 与 向后引用

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

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

       

4.常用分组语法

分类

代码/语法

说明

捕获

(exp)

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

(?<name>exp)

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

(?:exp)

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

零宽断言

(?=exp)

匹配exp前面的位置

(?<=exp)

匹配exp后面的位置

(?!exp)

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

(?<!exp)

匹配前面不是exp的位置

注释

(?#comment)

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

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

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

   (?<=exp)  (?<=re)w+  reading a book

   向零宽断言

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

(?!exp)

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

3. 元字符(特殊意义)

 : 分界,限定位置   hi    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]?dd?(?#0-199)

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

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

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

原文地址:https://www.cnblogs.com/goAhead-hust/p/3961625.html