黑马程序员_正则表达式学习笔记(1)
2013-06-06 00:33
295 查看
正则表达式学习笔记(1)
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------详细请看这位大神的《正则表达式30分钟入门教程》
(学习正则表达式之前必须有个好的工具,我使用的是Regulator.exe)
一、学习正则的时候不必都记住某个元字符具体的意思,但是必须知道都有那些功能,方便以后使用到的时候能及时解决问题。
二、学习后必须知道的知识点 (先学会使用这些基本就够用了,其他的在开发中再去看就是了)
1、元字符(常用的)
序号 | 元字符 | 作用 | 实例 |
1 | .点 | 匹配任意单个字符 | |
2 | []中括号 | 匹配其中单个字符 | 例[123]或[1-3] 表示匹配1或2或3 |
3 | ()小括号 | 改变优先集,()中的也表示一个组 | |
4 | |竖线 | 或 | g|food 匹配g 或 food ;(g|f)ood 表示匹配good 或 food |
5 | *星号 | 0次或多次 | |
6 | + | 1次或多次 | |
7 | ? | 0次或1次 | |
8 | {} | {n}表示确定n次;{n,}表示最少出现n次;{n,x}表示最少出现n次且最多出现x次 | |
9 | ^ | ^表示以什么开始 | ^123asd 表示以123asd开头;^(123)asd 表示以123开头 |
10 | $ | $表示以什么结束 |
序号 | 表达式 | 作用 | 实例 |
1 | \d | 匹配一个数字 | 等同于[0-9] |
\D | 匹配非数字 | 等同于[^0-9] | |
2 | \s | 匹配换行符、Tab制表符、空格等空白字符 | |
\S | 匹配非空白字符 | ||
3 | \w | 匹配“字母”、“数字”、“下划线”、“汉字” | |
\W | 非\w | ||
4 | [\u4e00-\u9fff] | 匹配所有汉字 |
()小括号中的可以看做是一个组,在提取的时候整个匹配项是X[0],第一个小括号是X[1],依次类推
4、贪婪模式和非贪婪模式
+、*的匹配默认是贪婪的:尽可能多的匹配,直到“再贪婪一点儿”其后的匹配模式就没法匹配为止。
在+、*后添加?就变成非贪婪模式(? 的另外一个用途):让其后的匹配模式尽早的匹配。
实例:字符串:“孔子说:三人行,必有我妻。择其靓者而娶之。”
贪婪模式:"孔子.+。" 匹配结果:“孔子说:三人行,必有我妻。择其靓者而娶之。”
非贪婪模式:"孔子.+?。" 匹配结果:“孔子说:三人行,必有我妻。”
三、C#中如何操作正则
Regex.IsMatch 字符串匹配
Regex.Match 字符串提取
Regex.Matches 提取多个匹配结果
Regex.Replace 正则替换 分组替换
Match 单行模式 Single line 让正则表达式的.能匹配到\n
MatchCollection
四、实例
1、判断日期格式是否合法(2013-5-27、2013-05-27、2013-05-5、2013-5-5都合法)
正则表达式:^\d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])$
static void Main(string[] args) { string str=@"\d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])";//正则表达式(不能匹配润年平年哈) Console.WriteLine(Regex.IsMatch("传说中这一天,也就是2012-2-31是世界末日。", str));//打印判断结果 Console.WriteLine(Regex.Match("传说中这一天,也就是2012-2-31是世界末日。", str)); //把匹配的结果打印出来 Console.ReadKey(); 7 }
2、从网上抓取指定网页内的所有email地址
static void Main(string[] args) { //邮箱的正则表达式 //不知道邮箱能不能以汉字开头,所以没有排除汉字开头 //这里定义了邮箱只能以a-z结束 string reg = @"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*[a-z]"; //实例化一个WebClient wc来下载URL上的字符串 WebClient wc = new WebClient(); string str = wc.DownloadString("http://bbs.tianya.cn/post-936-94688-1.shtml"); //Match集合MatchCollection 来接收Regex.Matches(str, reg)分析出来的信息。 MatchCollection mcs = Regex.Matches(str, reg); //遍历 mcs,打印他的每一个值 foreach (Match item in mcs) { if (item.Success) { //如果值里面还有分组请使用item.Groups 来取值 Console.WriteLine(item.Value); } } Console.Read(); }
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
相关文章推荐
- 黑马程序员_Java正则表达式学习笔记
- 黑马程序员--正则表达式学习笔记
- 黑马程序员------java学习笔记之正则表达式
- 黑马程序员——java学习笔记--正则表达式
- 黑马程序员:正则表达式学习笔记
- 黑马程序员java学习笔记——正则表达式、反射
- 黑马程序员——学习笔记13.Java正则表达式
- 黑马程序员 java学习笔记 Day8:正则表达式
- 黑马程序员_学习笔记4 IO流以及正则表达式解决一个传智播客的问题
- 黑马程序员--学习笔记--正则表达式
- 黑马程序员_学习笔记:17) 正则表达式
- 黑马程序员 java学习笔记——正则表达式
- 黑马程序员_.NET学习14(正则表达式笔记)
- 黑马程序员--Java基础学习笔记【正则表达式、常用API】
- 黑马程序员_学习笔记第25天——正则表达式
- 黑马程序员_学习笔记第24天——正则表达式
- 黑马程序员 JAVA学习笔记 —— 正则表达式
- 黑马程序员 java学习笔记--正则表达式
- JAVA学习笔记-----正则表达式
- 正则表达式学习笔记