正则表达式(.NET)
元字符:
\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)的更多相关文章
- JS正则表达式常用总结
正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...
- Python高手之路【五】python基础之正则表达式
下图列出了Python支持的正则表达式元字符和语法: 字符点:匹配任意一个字符 import re st = 'python' result = re.findall('p.t',st) print( ...
- C# 正则表达式大全
文章导读 正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET提供的Regex类实现了验证正则表达式的方法.Regex 类表示不可变(只读)的 ...
- C#基础篇 - 正则表达式入门
1.基本概念 正则表达式(Regular Expression)就是用事先定义好的一些特定字符(元字符)或普通字符.及这些字符的组合,组成一个“规则字符串”,这个“规则字符串”用来判断我们给定的字符串 ...
- JavaScript正则表达式,你真的知道?
一.前言 粗浅的编写正则表达式,是造成性能瓶颈的主要原因.如下: var reg1 = /(A+A+)+B/; var reg2 = /AA+B/; 上述两个正则表达式,匹配效果是一样的,但是,效率就 ...
- Python 正则表达式入门(中级篇)
Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...
- 【JS基础】正则表达式
正则表达式的() [] {}有不同的意思. () 是为了提取匹配的字符串.表达式中有几个()就有几个相应的匹配字符串. (\s*)表示连续空格的字符串. []是定义匹配的字符范围.比如 [a-zA-Z ...
- JavaScript 正则表达式语法
定义 JavaScript定义正则表达式有两种方法. 1.RegExp构造函数 var pattern = new RegExp("[bc]at","i"); ...
- [jquery]jquery正则表达式验证(手机号、身份证号、中文名称)
数字判断方法:isNaN()函数 test()方法 判断字符串中是否匹配到正则表达式内容,返回的是boolean值 ( true / false ) // 验证中文名称 function isChin ...
- JS中给正则表达式加变量
前不久同事询问我js里面怎么给正则中添加变量的问题,遂写篇博客记录下. 一.字面量 其实当我们定义一个字符串,一个数组,一个对象等等的时候,我们习惯用字面量来定义,例如: var s = &quo ...
随机推荐
- storm出现的背景
storm出现的背景 互联网从诞生的第一时间起,对世界的最大改变就是让信息能够实时交互,从而大大加速了各个环节的效率.正因为大家有对信息实时响应.实时交互的需求,所以软件行业除了个人操作系统之外,数 ...
- SQL SERVER全面优化
今天我们从语句的一些优化写法及一些简单优化方法做一个介绍.这对于很多开发人员来说还是很有用的!为了方便阅读给出前文链接: SQL SERVER全面优化-------Expert for SQL Ser ...
- UNITY 打包安卓APK
1,安装JDK.这个直接下就行了. 2,安装android sdk相关.这个比较蛋疼,官网是被墙的.有些网站的包还是需要访问墙外下载的.关键是找对那个能用的包(对我来说就是不FQ). http://p ...
- redis多实例运行
有的时候会遇到一种情况,在一台服务器,一个redis实例会出现不够用的情况 那么这时我们可以创建多个实例,以满足不同的业务需求和功能需求 1.首先创建一个运行redis的普通用户 useradd -s ...
- iOS 开发中使用到的小技巧汇总
国庆即将来到,一个小项目也即将完成,把自己在项目中用的一些小技巧写出来,方便查找. 1,去掉分割线--动画设置透明度alpha //去掉tableView的分隔线: self.tableVie ...
- Effective Java:Ch4_Class:Item13_最小化类及其成员的可访问性
要区别一个模块是否设计良好,最重要的因素是,对于其他模块而言该模块隐藏其内部数据和其他实现细节的程度.设计良好的模块应该隐藏所有实现细节,将API与其实现清晰地隔离开来.这样,模块之间通过他们的API ...
- NSUserDefaults偶尔/有时候保存数据会失败/失效
之前已经实现了通过NSUserDefaults去保存用户数据: [已解决]iPhone/iOS中保存自定义对象(Custom Object/Custom Class)的数组(NSMutableArra ...
- 从零开始,打造自己的首个 iOS 框架
如果你曾试图创建自己的iOS框架,你知道这不是一个头脑发热作出的决定 — 管理依赖以及写测试用例一点也不简单.本教程将会带你从头到尾创建你的第一个iOS框架,让你可以创建自己的框架. 我们将在框架暴露 ...
- the second assignment of software testing
作业2期心得体会.第一期仍有未完成的项目,比如应该指定所读课题的范围,是关于哪个方面的. 作业项目一: 安装并使用CheckStyle/PMD与FindBug 现在网络上查找了一番发现checkSty ...
- c#的方法重写和的java方法重写有什么区别
java code: package example; class m1 { public int getInt() { return 0; } } class m2 extends m1 { pub ...