[关闭]
@superkevingit 2016-10-10T09:21:00.000000Z 字数 1003 阅读 1191

正则表达式

学习


参考文章

http://deerchao.net/tutorials/regex/regex.htm
http://fxck.it/post/50558232873

元字符

  1. \b : 单词的开头或结尾,也就是单词的分界处
  2. 例: \bhi\b 匹配单词hi
  3. . : 除了换行符以外的任意字符
  4. >> 例: \bhi\b.*\bLucy\b 匹配一个单词hi,然后是任意个任意字符(但不能是换行),最后是Lucy这个单词
  5. \d : 匹配一位数字
  6. >> 0\d{2}-\d{8} 匹配011-11111111
  7. \s : 任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等
  8. \w : 字母或数字或下划线或汉字等
  9. ^ : 匹配字符串的开始
  10. $ : 匹配字符串的结束

字符转义

使用‘ \ ’将元字符转义

限定符

  1. * : 前边的内容可以连续重复使用任意次以使整个表达式得到匹配
  2. + : 重复一次或更多次
  3. ? : 重复零次或一次
  4. {n} : 必须连续重复匹配n
  5. {n,} : 重复n次或更多次
  6. {x,y} : 匹配xy

字符类

使用' [ ] '指定匹配范围

分枝条件

使用' | '将不同规则分开
* 注意分支条件的顺序

分组

使用' ( ) '指定子表达式(分组)
* 区别字符类,分组中可使用表达式

反义

  1. \W 匹配任意不是字母,数字,下划线,汉字的字符
  2. \S 匹配任意不是空白符的字符
  3. \D 匹配任意非数字的字符
  4. \B 匹配不是单词开头或结束的位置
  5. [^x] 匹配除了x以外的任意字符
  6. [^aeiou] 匹配除了aeiou这几个字母以外的任意字符

后向引用

重复搜索前面某个分组匹配的文本

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

  1. (?'Word'\w+)
  2. (?<Word>\w+)
  3. => 组名为Word

反向引用使用 ' \k ',例如:

\b(?\w+)\b\s+\k\b

等价于:

\b(\w+)\b\s+\1\b

分类 代码/语法 说明
(exp) 匹配exp,并捕获文本到自动命名的组里
捕获 (?exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
(?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号
(?=exp) 匹配exp前面的位置
零宽断言 (?<=exp) 匹配exp后面的位置
(?!exp) 匹配后面跟的不是exp的位置
(?<!exp) 匹配前面不是exp的位置
注释 (?#comment) 这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读

零宽断言

负向零宽断言

注释

贪婪与懒惰

处理选项

平衡组/递归匹配

还有些什么东西没提到

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注