元字符:

\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. Devlop Win 8 and Windows Phone App for Microsoft Dynamics CRM

    Microsoft Dynamics CRM App for Windows Phone http://www.windowsphone.com/en-us/store/app/dynamics-cr ...

  2. 问题-delphi无法编辑oracle表

    问题现象:在一次开发过程中,遇到了delphi无法编辑oracle表. 问题原因:原来是自己误操作控件的属性了. 问题处理: OraQuery1.ReadOnly:=False; OraQuery1. ...

  3. http 2.0

    http2.0  待学习整理 http://www.zhihu.com/question/34074946

  4. linux安装svn服务器(yum方式)

    1.查看yum是否安装         在终端中输入yum即可如果已经安装,会显示yum的参数         如果没有安装,会提示yum未安装或无效命令…… 2.安装svnyum -y instal ...

  5. SQLite 入门教程(二)创建、修改、删除表 (转)

    转于 SQLite 入门教程(二)创建.修改.删除表 一.数据库定义语言 DDL 在关系型数据库中,数据库中的表 Table.视图 View.索引 Index.关系 Relationship 和触发器 ...

  6. oracle11 客户端安装及PLSQL和TOAD中文乱码

    oracle11 客户端安装及PLSQL和TOAD中文乱码 1.从Oracle官方下载“Instant Client Package”的软件,较好的实现了Oracle客户端绿化的解决方案. 下载地址为 ...

  7. Dom4j写XML

    package com; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.I ...

  8. Yii CGridView 基本使用(三)关联表相关字段搜索

    加入 关联表 相关字段的搜索: 先说一句,我们在这里仅仅谈 "一对多" 的关联搜索,首先,不要忘了我们的数据库,忘记的同学请戳这里:这里.能够看到在 tbl_post 中是有一个外 ...

  9. java.lang.ClassNotFoundException: Didn't find class "*****Activity" on path: /data/app/*******.apk

    http://blog.csdn.net/lovexieyuan520/article/details/9032797/ 很多人出现了java.lang.RuntimeException: Unabl ...

  10. Could not initialize class org.apache.log4j.LogManager 报错

    部署项目的时候,在windows下一切正常,但是在centos下就发生如下错误 Caused by: java.lang.ExceptionInInitializerError at com.dsid ...