C#正则表达式
正则表达式的定义:
英文全称Regular Expression是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。
正则表达式元字符是熟悉正则表达式的关键。在我的理解,实际上他就是某种格式的表达方式而已。就像我们说要问好一样,用中文说:你好!用英文说:Hello!
他们表达的意思就是问好,只是不同的表现形式而已,正则表达式也是一样的,想表达一种特定的字符,只是用了他独有的语言风格!
正则表达式的使用:
先说明:以下表达式都不是最标准的表达式(标准表达式还请查阅W3C相关文档)
1 /*
2 * 在.Net中要使用正则表达式,我们需要引入System.Text.RegularExpressions命名空间,
3 * 这个命名空间包含一些类,这些类提供对 .NET Framework 正则表达式引擎的访问。
4 * 先来看看Regx类,它表示不可变的正则表达式。下面首先来做字符串匹配练习
5 */
6
7 //字符串匹配
8
9 //判断字符串是否为邮政编码
10 Console.WriteLine(Regex.IsMatch("100334","^[0-9]{6}$"));
11
12 //判断字符串是否为身份证号码(及15位或者18位)
13 Console.WriteLine(Regex.IsMatch("123456789012344534","^(([0-9]{15})|([0-9]{18}))$"));
14
15 //判断字符串是否为邮箱地址
16 Console.WriteLine(Regex.IsMatch("fdas@126.cn", @"^\w+@\w+\.(com)|(cn)$"));
17
18 //判断是否符合IP地址
19 Console.WriteLine(Regex.IsMatch("192.168.10.1", @"^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$"));
20
21 //判断日期
22 Console.WriteLine(Regex.IsMatch("2008-10-01", @"^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$"));
23
24 //匹配URL地址
25 Console.WriteLine(Regex.IsMatch("http://www.baidu.com",@"^http://\w+\.\w+\.\w+$"));
1 //字符串提取
2
3 //提取名字
4 Match match = Regex.Match("张飞的英文名字叫ZHANGFEI", @"^(\w+)的英文名字叫(\w+)$");
5 if (match.Success) {
6 Console.WriteLine(match.Groups[1].Value);
7 Console.WriteLine(match.Groups[2].Value);
8 }
9
10 //提取年月日
11 Match math2 = Regex.Match("8 28 2012", @"([a-zA-Z]+)\s+(\d{1,2})\s+(\d{3,4})");
12 if (math2.Success) {
13 Console.WriteLine(math2.Groups[1].Value);
14 Console.WriteLine(math2.Groups[2].Value);
15 Console.WriteLine(math2.Groups[3].Value);
16 }
1 /*
2 * 字符串提取有两种模式。
3 * 一种是尽可能多的匹配,有人称为贪婪模式,一般用+表示
4 * 另一种是尽可能少的匹配,有人称为非贪婪模式,一般用+?表示
5 */
6
7 //贪婪模式
8 Match match3 = Regex.Match("我是小明。家住中国哦。哦哦。。哦哦。","我是(.+)。");
9 if (match3.Success)
10 {
11 Console.WriteLine(match3.Groups[1].Value);
12 }
13
14 //非贪婪模式
15 Match match4 = Regex.Match("我是小明。家住中国哦。哦哦。。哦哦。", "我是(.+?)。");
16 if (match4.Success)
17 {
18 Console.WriteLine(match4.Groups[1].Value);
19 }
1 //正则表达式替换
2 string input = "你好啊,小明,aaaaaaa,我是aaaaaaa,我很aa";
3 string result = Regex.Replace(input,"a+","A");
4 Console.WriteLine(result);