C#常用正则表达式回顾
项目中有些时候需要用到正则表达式,但是自己对正则表达式不熟悉,每次学习完,过一段时间(长时间)不用,就又忘了,每次需要用到的时候都需要百度下,比较麻烦,这里把C#中经常用到的正则表达式做下总结。
正则表达式常用的环境
爬虫、网站数据验证、日志分析、字符串替换、获取子字符串、文本处理、字符串处理等
正则基础
1. []方括号表示匹配可以匹配方括号中的任意点单个字符,方括号只允许匹配单个字符。
2. | 或表示两项之间的一个选择,它不能和方括号使用,只能和小括号使用。
3. ()小括号表示一个子表达式的开始和结束位置
4. ^ 否符号,如果用在方括号内,“^”表示不想要匹配的字符。
5. . 点字符:匹配除换行符 \n 之外的任何单字符。要匹配 . ,请使用 \. 。
6. 定位符:定位符使您能够将正则表达式固定到行首或行尾,^ 和 $ 分别指字符串的开始与结束
7. 限定符:限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配
- * 表示匹配前面的子表达式0次或多次
- ?表示匹配前面的子表达式0次或一次
- + 表示匹配前面的子表达式至少匹配一次
- {n} 表示匹配前面的子表达式n次
- {n,m} 表示匹配前面的子表达式从n次到m次
8. 转义字符
- \d 匹配一个数字字符。等价于 [0-9]。
- \D 匹配一个非数字字符。等价于 [^0-9]。
- \s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
- \S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
- \w 匹配字母、数字、下划线。等价于'[A-Za-z0-9_]'。
- \W 匹配非字母、数字、下划线。等价于 '[^A-Za-z0-9_]'。
- \n 匹配一个换行符
- \r 匹配一个回车符
- \b 匹配一个单词边界,即字与空格间的位置。匹配单词的开始或者结尾部分
- \B 匹配非单词边界 匹配单词的中间部分,例如:匹配:Chapter中的apt,/\Bapt/
9. 捕获组:除(Expression)和(?<name>Expression)语法外,其它的(?...)语法都不是捕获组。
var str = "Is is the cost of of gasoline going up up";
var patt1 = @"\b([a-z]+) \1\b";
var matchDatas1 = Regex.Matches(str, patt1).Select(x => x.Value);
Console.WriteLine(JsonConvert.SerializeObject(matchDatas1));//["of of","up up"]
捕获组的顺序是从左到右,从1开始,0代表整体,这里的\1就是分组的第一个自匹配项,在Replace中可以用$1操作
string a = @"(020)76544567";
string b = @"\((\d{3})\)(\d{8})";
var c = new Regex(b);
string d = c.Replace(a, "$0-$1-$2");
Console.WriteLine(d);//(020)76544567-020-76544567
10.选择
用圆括号将所有选择项括起来,相邻的选择项之间用|分割。用圆括号会有一个副作用,使相关的匹配会被缓存,缓存的数据会占用内存,降低匹配效率。此时可用?:放在第一个选项前来消除这种副作用。
可以使用非捕获元字符 ?:、?= 或 ?! 来重写捕获,忽略对相关匹配的保存。
- (?:pattern)匹配pattern,但不捕获匹配结果。'industr(?:y|ies)' 例如:匹配'industry'或'industries'。
- (?=pattern)零宽度正向预查,不捕获匹配结果。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”
- (?!pattern)正向否定预查,不捕获匹配结果。例如,“Windows(?!95|98|NT|2000)”不能匹配“Windows2000”中的“Windows”,但能匹配“Windows3.1”中的“Windows”
常用正则表达式
1. 非空字符串,适用于匹配单词,关键字等 @"\S+"
2. html标签 @"<[^>]+>"
- 匹配带连接的a标签 @"<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>"
- 匹配链接 "(href|src)\\s*=\\s*(?:\"(?<1>[^\"]*)\"|(?<1>\\S+))"
- 匹配图片 "<img(.*?)>"
- 任意标签: @"\<[^\>]+\>([^\<]+)\<\/[^\>]+\>"
3. Email地址:@"\w+@(\w+\.)+\w{2,3}";
4. 域名:@"[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?";
5. InternetURL:@"[a-zA-z]+://[^\s]*" 或 @"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$";
6. 手机号码:@"^([1][3,4,5,6,7,8,9])\d{9}$";
7. 国内电话号码:@"\d{3}-\d{8}|\d{4}-\d{7}";
8. 身份证:@"(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)";
9. 强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在 6-10 之间):@"^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{6,10}$";
10. 简单密码:@"\w{6,10}";
11. 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):@"^[a-zA-Z][a-zA-Z0-9_]{4,15}$";
12. 钱:@"^[0-9]+(.[0-9]+)?$";
13. QQ:@"[1-9][0-9]{4,}";
13. 邮政编码:@"[1-9]\d{5}(?!\d)";
14. IP:@"^\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}$";
15. 数字: @"^\d+$";
16. 字母:@"^[a-zA-Z]+$";
17. 获取Html中的文本内容
public static string GetHtmlText(string html)
{
html = Regex.Replace(html, @"<[^<>]+>", "", RegexOptions.IgnoreCase);
html = html.Replace("\r\n", "").Replace("\r", "").Replace(" ", "").Replace(" ", "");
return html;
}
18.隐藏手机号中间几位数
Regex.Replace(手机号, "(\\d{3})\\d{4}(\\d{4})", "$1****$2");
C#常用正则表达式回顾的更多相关文章
- Javascript正则构造函数与正则表达字面量&&常用正则表达式
本文不讨论正则表达式入门,即如何使用正则匹配.讨论的是两种创建正则表达式的优劣和一些细节,最后给出一些常用正则匹配表达式. Javascript中的正则表达式也是对象,我们可以使用两种方法创建正则表达 ...
- [python] 常用正则表达式爬取网页信息及分析HTML标签总结【转】
[python] 常用正则表达式爬取网页信息及分析HTML标签总结 转http://blog.csdn.net/Eastmount/article/details/51082253 标签: pytho ...
- 常用正则表达式-copy
匹配中文:[\u4e00-\u9fa5] 英文字母:[a-zA-Z] 数字:[0-9] 匹配中文,英文字母和数字及_: ^[\u4e00-\u9fa5_a-zA-Z0-9]+$ 同时判断输入长度:[\ ...
- IOS常用正则表达式
IOS常用正则表达式 正则表达式用于字符串处理.表单验证等场合,实用高效.现将一些常用的表达式收集于此,以备不时之需. 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 评注:匹配中文还真是 ...
- 【转】【Asp.Net MVC】asp.net mvc Model验证总结及常用正则表达式
本文属转载,来源: http://www.byywee.com/page/M0/S868/868615.html 关于Model验证官方资料: http://msdn.microsoft.com/zh ...
- PHP常用正则表达式汇总 [复制链接]
PHP常用正则表达式汇总 [复制链接] 上一主题下一主题 离线我是小猪头 法师 发帖 539 加关注 发消息 只看楼主 倒序阅读 使用道具楼主 发表于: 2011-06-22 更多 ...
- PHP中常用正则表达式大全
常用正则表达式大全!(例如:匹配中文.匹配html) 匹配中文字符的正则表达式: [u4e00-u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内 ...
- JavaScript常用正则表达式与应用(一)
JavaScript的String类和RegExp对象类都定义了相关方法使用正则表达式进行模式匹配,本文将以连载方式介绍JavaScript常用正则表达式与相关应用,欢迎交流 本节是连载一,首先介绍J ...
- Java基础知识强化71:正则表达式之基本规则 和 常用正则表达式
1. 基本规则: A:字符 x 字符 x.举例:'a'表示字符a \\ 反斜线字符. \n 新行(换行)符 ('\u000A') \r 回车符 ('\u000D') B:字符类 [abc] a.b 或 ...
随机推荐
- swagger-editor
前言 上一篇文章我们有提到Swagger做接口的定义是采用yaml语言的,当然,yaml是个啥,大家自行百度.阿福在此不做赘述了.但是,今天我们要来讲的是yaml支持比较好的Swagger-Edito ...
- 利用WIX制作安装包(1)
原文 利用WIX制作安装包(1) #installation 下载最新版本的WIX toolset 并安装DOWNLOAD Wix toolset V3.5之后的版本已经可以集成到visual stu ...
- Win8Metro(C#)数字图像处理--2.20图像垂直镜像
原文:Win8Metro(C#)数字图像处理--2.20图像垂直镜像 [函数名称] 图像垂直镜像函数MirrorYProcess(WriteableBitmap src) [函数代码] ...
- TP5.0中使用trace调试
1.在项目 的配置文件config.php 配置, 2.在程序中使用trace: 3.在浏览器网页上打开 得到如下图所示:点击 “用户变量”,即可查看使用trace输出的变量 或者我们使用 trace ...
- ReportViewer,RDLC 报表开发之个性化样式
原文:ReportViewer,RDLC 报表开发之个性化样式 报表开发中,客户对样式提出了要求: 1.工具栏上显示每页条数 2.只导出Excel,不需要下拉菜单. 3.报表上显示的图表,分页时,每页 ...
- 微信小程序把玩(五)页面生命周期
原文:微信小程序把玩(五)页面生命周期 这里只要熟悉页面的基本生命周期即可,业务在指定生命周期函数内书写. 以下是官网给出的生命周期函数方法和状态图 上面的生周期函数图对于做Android 或者IOS ...
- Windows开机自启动位置
HKCU refers to HKEY_CURRENT_USERHKLM refers to HKEY_LOCAL_MACHINE HKCU\Software\Microsoft\Windows\Cu ...
- Java实现Qt的SIGNAL-SLOT机制(保存到Map中,从而将它们关联起来,收到信号进行解析,最后反射调用)
SIGNAL-SLOT是Qt的一大特色,使用起来十分方便.在传统的AWT和Swing编程中,我们都是为要在 监听的对象上添加Listener监听器.被监听对象中保存有Listener的列表,当相关事件 ...
- Elasticsearch ML
Elastic公司在收购了Prelert半年之后,终于在Elasticsearch 5中推出了Machine Learning功能.Prelert本身就擅长做时序性数据的异常检测,从这点上讲也比较契合 ...
- C++中的new,operator new与placement new
以下是C++中的new,operator new与placement new进行了详细的说明介绍,需要的朋友可以过来参考下 new operator/delete operator就是new和 ...