013天(.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$ $表示以什么结束 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2、简写表达式(常用的) 
序号表达式作用实例
1\d匹配一个数字等同于[0-9]
 \D匹配非数字等同于[^0-9]
2\s匹配换行符、Tab制表符、空格等空白字符 
 \S匹配非空白字符 
3\w匹配“字母”、“数字”、“下划线”、“汉字” 
 \W非\w 
4[\u4e00-\u9fff]匹配所有汉字 
 
 
 
 
 
 
 
 
 
3、匹配组
()小括号中的可以看做是一个组,在提取的时候整个匹配项是X[0],第一个小括号是X[1],依次类推
 
4、贪婪模式和非贪婪模式
+、*的匹配默认是贪婪的:尽可能多的匹配,直到“再贪婪一点儿”其后的匹配模式就没法匹配为止。
在+、*后添加?就变成非贪婪模式(? 的另外一个用途):让其后的匹配模式尽早的匹配。
实例:字符串:“孔子说:三人行,必有我妻。择其靓者而娶之。” 
贪婪模式:"孔子.+。"                            匹配结果:“孔子说:三人行,必有我妻。择其靓者而娶之。” 
非贪婪模式:"孔子.+?。"                         匹配结果:“孔子说:三人行,必有我妻。” 
 
三、C#中如何操作正则表达式

Regex.IsMatch 字符串匹配

 

 

 Regex.Match 字符串提取

 

 

  Regex.Matches 提取多个匹配结果

 

 

Regex.Replace 正则替换 分组替换

 

 

Match

 

MatchCollection

 

 

单行模式 Single line 让正则表达式的.能匹配到\n

 

 

多行模式 Multiline ^$ 匹配每一行的内容

 
四、实例
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])$ 
1  static void Main(string[] args)
2         {
3             string str=@"\d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])";//正则表达式(不能匹配润年平年哈)
4             Console.WriteLine(Regex.IsMatch("传说中这一天,也就是2012-2-31是世界末日。", str));//打印判断结果
5             Console.WriteLine(Regex.Match("传说中这一天,也就是2012-2-31是世界末日。", str)); //把匹配的结果打印出来           
6             Console.ReadKey();
7 
8         }

 2、从网上抓取指定网页内的所有email地址

 1 static void Main(string[] args)
 2         {
 3             //邮箱的正则表达式
 4             //不知道邮箱能不能以汉字开头,所以没有排除汉字开头
 5             //这里定义了邮箱只能以a-z结束
 6 
 7             string reg = @"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*[a-z]";
 8             //实例化一个WebClient wc来下载URL上的字符串
 9             WebClient wc = new WebClient();
10             string str = wc.DownloadString("http://bbs.tianya.cn/post-936-94688-1.shtml");
11             //Match集合MatchCollection 来接收Regex.Matches(str, reg)分析出来的信息。
12             MatchCollection mcs = Regex.Matches(str, reg);
13             //遍历 mcs,打印他的每一个值
14             foreach (Match item in mcs)
15             {
16                 if (item.Success)
17                 {
18                     //如果值里面还有分组请使用item.Groups[n]来取值
19                     Console.WriteLine(item.Value);
20                 }
21             }
22             Console.Read();
23 
24         }

 


<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值