@superkevingit
2016-10-10T09:21:00.000000Z
字数 1003
阅读 1191
学习
http://deerchao.net/tutorials/regex/regex.htm
http://fxck.it/post/50558232873
\b : 单词的开头或结尾,也就是单词的分界处例: \bhi\b 匹配单词hi. : 除了换行符以外的任意字符>> 例: \bhi\b.*\bLucy\b 匹配一个单词hi,然后是任意个任意字符(但不能是换行),最后是Lucy这个单词\d : 匹配一位数字>> 例 : 0\d{2}-\d{8} 匹配011-11111111\s : 任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等\w : 字母或数字或下划线或汉字等^ : 匹配字符串的开始$ : 匹配字符串的结束
使用‘ \ ’将元字符转义
* : 前边的内容可以连续重复使用任意次以使整个表达式得到匹配+ : 重复一次或更多次? : 重复零次或一次{n} : 必须连续重复匹配n次{n,} : 重复n次或更多次{x,y} : 匹配x到y次
使用' [ ] '指定匹配范围
使用' | '将不同规则分开
* 注意分支条件的顺序
使用' ( ) '指定子表达式(分组)
* 区别字符类,分组中可使用表达式
\W 匹配任意不是字母,数字,下划线,汉字的字符\S 匹配任意不是空白符的字符\D 匹配任意非数字的字符\B 匹配不是单词开头或结束的位置[^x] 匹配除了x以外的任意字符[^aeiou] 匹配除了aeiou这几个字母以外的任意字符
重复搜索前面某个分组匹配的文本
' \1 ' 代表分组1匹配的文本
(?'Word'\w+)或(?<Word>\w+)=> 组名为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) | 这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读 |