元字符:

\b  单词的开头或结尾,匹配一个位置

.    匹配除换行符以外的任意字符

\d  匹配一位数字  \d{n} n个数字  \d{a,b} a到b个数字,包含a,b

\s  匹配任意空白符(空格,制表符,换行符,中文全角空格)

\w  匹配字母,数字,下划线,汉字

^   匹配字符串的开始

$   匹配字符串的结束

转义字符

\\  \*  \+  \.

重复

*  重复0次或更多次

+ 重复一次或更多次

? 重复0次或1次

{n}  重复n次

{n,} 重复n次或更多次

{n,m} 重复n到m次

字符

[aeiou] 匹配aeiou中的任意一个字符

[0-9]  匹配0到0中的任意一个数字

[a-z0-9A-Z] 匹配任意一位数字或字母

分析条件  |

类似与或,从左到右进行分析,满足就不再继续进行

0\d{2}-\d{8}\0\d{3}-\d{7}  可以匹配三位区号加八位号码 或 四位区号加七位号码

分组

有时候需要重复的不是单个字符,而是某种形式的字符组,可以用()对字符进行分组,{n} 表示重复次数

(d\{3}\.){3}\d{3} 是一个简单的ip地址形式的匹配,但是会匹配一些不满组格式的ip地址

((2[0-4]\d|25[0-5]|[0,1]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[0,1]?\d\d?)

反义

有时候需要查找不属于某个能简单定义的字符类的字符,则需要使用到反义

\W  非字母数字下划线汉字

\D   非数字

\S   非空白

\D   非单词开头或结束的位置

[^x]  除x以外的任意字符

[^aeiou] aeiou之外的任意字符

向后引用

使用小括号指定一个子表达式后,匹配这个子表达式的文本被分配到一个组里,可以对这个文本做进一步的处理,通过组号或组名来代表这个捕获的文本

组号0对整个正则表达式,组号分配有一定的规则,也可以自己命名组,同时会根据规则分配给一个组号。

\组号 代表匹配组号对应表达式的文本

组号分配:

自己命名:子表达式的组名 (?<name>子表达式) 或 (?'name'子表达式)  就将这个子表达式对应的组名命名为name  通过\k<name> 即可代表子表达式捕获的文本

组号分配过程是从左到右扫描两遍,第一遍只给未命名组分配组号,第二遍给命名组分配组号,从1开始分

如果希望小括号指定的子表达式匹配的文本不被捕获,也不分配组号,则可以 (?:子表达式)

零宽断言

零宽断言是是用于指定一个满足一定条件的位置(断言),就像^,$,\b那样,并不代表某个字符,而是匹配一个位置

(?=表达式)   也被称为零宽度正预测先行断言,断言满足表达式的文本之前的位置。例如想匹配一个ing单词的非ing部分  \b\w+(?=ing\b)

(?<=表达式) 也被称为零宽度正回顾后发断言,断言的位置满足这个位置前面的文本满足表达式,相当与断言表达式的文本之后的位置

(?!表达式) 断言不满足表达式的文本之前的位置       (?<!\d)\d{3}(?!\d) 匹配三个数字,而且这三个数字前后都不能是数字

(?<!表达式) 断言不满组表达式的文本之后的位置

注释

(?#comment)

贪婪与懒惰

有时候满足匹配的文本有长有短,默认情况下,会匹配尽可能多的字符,称为贪婪匹配,匹配最短字符的情况称为懒惰匹配

由于默认是贪婪匹配,所以只列出懒惰匹配

*?  +?  ??  {n,m}?  {n,}?

参考:http://www.jb51.net/tools/zhengze.html

正则表达式(.NET)的更多相关文章

  1. JS正则表达式常用总结

    正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...

  2. Python高手之路【五】python基础之正则表达式

    下图列出了Python支持的正则表达式元字符和语法: 字符点:匹配任意一个字符 import re st = 'python' result = re.findall('p.t',st) print( ...

  3. C# 正则表达式大全

    文章导读 正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET提供的Regex类实现了验证正则表达式的方法.Regex 类表示不可变(只读)的 ...

  4. C#基础篇 - 正则表达式入门

    1.基本概念 正则表达式(Regular Expression)就是用事先定义好的一些特定字符(元字符)或普通字符.及这些字符的组合,组成一个“规则字符串”,这个“规则字符串”用来判断我们给定的字符串 ...

  5. JavaScript正则表达式,你真的知道?

    一.前言 粗浅的编写正则表达式,是造成性能瓶颈的主要原因.如下: var reg1 = /(A+A+)+B/; var reg2 = /AA+B/; 上述两个正则表达式,匹配效果是一样的,但是,效率就 ...

  6. Python 正则表达式入门(中级篇)

    Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...

  7. 【JS基础】正则表达式

    正则表达式的() [] {}有不同的意思. () 是为了提取匹配的字符串.表达式中有几个()就有几个相应的匹配字符串. (\s*)表示连续空格的字符串. []是定义匹配的字符范围.比如 [a-zA-Z ...

  8. JavaScript 正则表达式语法

    定义 JavaScript定义正则表达式有两种方法. 1.RegExp构造函数 var pattern = new RegExp("[bc]at","i"); ...

  9. [jquery]jquery正则表达式验证(手机号、身份证号、中文名称)

    数字判断方法:isNaN()函数 test()方法 判断字符串中是否匹配到正则表达式内容,返回的是boolean值 ( true / false ) // 验证中文名称 function isChin ...

  10. JS中给正则表达式加变量

    前不久同事询问我js里面怎么给正则中添加变量的问题,遂写篇博客记录下.   一.字面量 其实当我们定义一个字符串,一个数组,一个对象等等的时候,我们习惯用字面量来定义,例如: var s = &quo ...

随机推荐

  1. Call Hierarchy(方法调用层次)

    在VS2010中的一项新功能:Call Hierarchy窗口,它可以审查代码,确定方法在哪里调用,以及它们与其他方法的关系. 打开一个类文件,找有方法体实现代码的方法,右键选择View Call H ...

  2. Oracle ABP(Autotask Background Process)

    ABP相当于自动任务与调度程序之间的中介,其主要作用是将自动任务转换成Autotask作业,供调度程序执行.同样重要的是,ABP还维护所有任务执行的历史记录.ABP将其专用资料档案库存储在sysaux ...

  3. PHP留言板(实例)

    lyb.htm <div class="lymain"> <script language="JavaScript"> function ...

  4. [转]JQuery判断浏览器类型版本1.9和2.0之后的区别

    转至:http://zhidao.baidu.com/link?url=Nzk2aSxBKRZKYg9Evqn8hLwMyXTI-4jza-zCAZq4Vd6hWCOHIvuBX6yj8hzDYDrf ...

  5. 对XML和YAML文件实现I/O操作

    1.文件的打开关闭 XML\YAML文件在OpenCV中的数据结构为FileStorage,打开操作例如: string filename = "I.xml"; FileStora ...

  6. 使用Camstudio和KeyCastOW来录屏制作软件Demo视频

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:使用Camstudio和KeyCastOW来录屏制作软件Demo视频.

  7. jQuery 编辑div内容

    div显示如下 <div id="showResult"></div> div中添加的html,进行拼接 $("#showResult" ...

  8. thickbox关闭子页后ajax局部刷新父页

    1. 首先注意需要调用thickbox的js <script type="text/javascript" src="<%=path%>/js/jque ...

  9. C# #define

    https://msdn.microsoft.com/library/yt3yck0x.aspx 使用 #define 定义符号.当您将符号用作传递给 #if 指令的表达式时,此表达式的计算结果为 t ...

  10. Mac OS X 如何设置默认浏览器

    有时候我们不希望在 Mac 中点击任何连接都打开的是 Safari,这需要修改默认浏览器设置,在 Mac OS X 中如何设置默认浏览器呢? 打开 Safari 的偏好设置,在「通用」选项卡中有「默认 ...