码迷,mamicode.com
首页 > 其他好文 > 详细

正则表达式知识点整理

时间:2015-09-06 18:09:27      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:

定位符    
\b 匹配单词的开始或结束  
\B 匹配不是单词开头或结束的位置  
^ 匹配字符串的开始  
$ 匹配字符串的结束  
内容匹配    
\w 匹配字母或数字或下划线或汉字  
\W 匹配非字母或数字或下划线或汉字的字符  
\d 匹配数字  
\D 匹配非数字  
\s 匹配任意的空白符  
\S 匹配任何非空白字符  
. 匹配除换行符以外的任意字符  
\f 匹配一个换页符  
\n 匹配一个换行符  
\r 匹配一个回车符  
\t 匹配一个制表符  
\v 匹配一个垂直制表符  
数量匹配    
* 重复零次或更多次  
重复零次或一次  
+ 重复一次或更多次  
{N} 重复N次  
{N,} 重复N次,或更多  
{N,M} 重复N到M次  
可选项匹配    
[ABC] 匹配[]中任何一个字符  
[0-9A-Z] 匹配0-9或A-Z中任何一个字符  
[^0-9] 匹配0-9以外任何一个字符  
分支条件    
| 分支条件(或逻辑) 使用分枝条件时,要注意各个条件的顺序。逻辑较为严格匹配表达式应该放在前面
匹配时,
将会从左到右地测试每个条件,如果满足了某个分枝的话,就不会去再管其它的条件了
分组    
() 可以用小括号来指定子表达式(分组) 对于子表达式可以去统一制定循环次数
向后引用    
(exp) 匹配exp,并捕获文本到自动命名的组里 引用方式:\index  index 为从左到右分配的组号
(?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?‘name‘exp) \K<nmae>
(?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号  
零宽断言    
(?=exp) 匹配exp前面的位置[描述 exp与前面部分的关系] 例如:\b\w+(?=ing\b)  先找到ing\b匹配的位置,然后再以ing\b为结尾判断\b\w+匹配的内容
(?<=exp) 匹配exp后面的位置[描述 exp与后面部分的关系] 例如:(?<=\bre)\w+\b  先找到\bre匹配的位置,然后再以\bre为开头判断\w+\b匹配的内容
负向零宽断言    
(?!exp) 匹配后面跟的不是exp的位置[描述 exp与前面部分的关系] 例如:\d{3}(?!\d) 先找到\d{3}匹配的字符串,然后判断它后面的内容不匹配\d
(?<!exp) 匹配前面不是exp的位置[描述 exp与后面部分的关系] 例如:(?<![a-z])\d{7} 先找到\d{7}匹配的字符串,然后判断它前面的内容不匹配[a-z]
注释    
(?#注释文本) 括号内的内容为注释  
#注释文本 当前这一行,#之后的内容全部为注释  
贪婪与懒惰    
贪婪匹配:正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。
懒惰匹配:就是匹配尽可能少的字符。只要在它后面加上一个问号?就可以转换  
匹配优先级:正则表达式有另一条规则,比懒惰/贪婪规则的优先级更高:最先开始的匹配拥有最高的优先权
*? 重复任意次,但尽可能少重复  
+? 重复1次或更多次,但尽可能少重复  
?? 重复0次或1次,但尽可能少重复  
{n,m}? 重复n到m次,但尽可能少重复  
{n,}? 重复n次以上,但尽可能少重复  
处理选项(.net支持)    
IgnoreCase(忽略大小写) 匹配时不区分大小写。  
Multiline(多行模式) 更改^和$的含义,使它们分别在任意一行的行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配。(在此模式下,$的精确含意是:匹配\n之前的位置以及字符串结束前的位置.)  
Singleline(单行模式) 更改.的含义,使它与每一个字符匹配(包括换行符\n)。  
IgnorePatternWhitespace(忽略空白) 忽略表达式中的非转义空白并启用由#标记的注释。  
ExplicitCapture(显式捕获) 仅捕获已被显式命名的组。  
如:Regex regex = new Regex(@"\ba\w{6}\b", RegexOptions.IgnoreCase);  
注:多行模式和单行模式可同时启用,这两个选项之间没有任何关系,除了它们的名字比较相似。    

正则表达式知识点整理

标签:

原文地址:http://www.cnblogs.com/SunDigital/p/4786520.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!