正则表达式提取(三)
2012-08-15 18:06 C#与.NET探索者 阅读(457) 评论(0) 编辑 收藏 举报
using System;
using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.IO; namespace 正则表达式提取 { class Program { static void Main(string[] args) { #region 提取字符串中的数字 //string str = "大家好呀,hello,2010年10月10日是个好日子。恩,9494.吼吼!886"; //////字符串提取的时候一般都不加^$ //////Regex.Match()方法只能提取字符串中的一个匹配。 ////一个Match对象,就表示一个匹配。 ////Match match = Regex.Match(str, @"\d+");//这里需要写一个正则表达式,该正则表达式需要满足 “数字” //////.Value:输出匹配的结果 ////Console.WriteLine(match.Value); ////Console.ReadKey(); ////提取所有的匹配用Regex.Matches(); ////返回值是所有的匹配项的集合。 //MatchCollection matches = Regex.Matches(str, @"\d+"); //g //for (int i = 0; i < matches.Count; i++) //{ // if (matches[i].Success) // { // //输出每个匹配的值。 // Console.WriteLine(matches[i].Value); // } //} //Console.ReadKey(); #endregion #region 提取网页中的所有的Email地址 //1.读取html文件中的所有的字符串 string html = File.ReadAllText("1.htm"); // 我的邮箱yzk@rupeng.com MatchCollection matches = Regex.Matches(html, @"([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9\-]+(\.[a-zA-Z]+){1,2})"); int count = 0; for (int i = 0; i < matches.Count; i++) { if (matches[i].Success) { //输出匹配的字符串(Email地址) Console.WriteLine(matches[i].Value); //Email的用户名: Console.WriteLine(matches[i].Groups[1].Value); //输出每个Email的域名 Console.WriteLine(matches[i].Groups[2].Value); Console.WriteLine(matches[i].Groups[3].Value); if (matches[i].Groups[2].Value.ToLower() == "gmail") { count++; } } } //1.统计gmail的用户的个数 //2.提取出每个Email的用户名。 //提取组。 Console.WriteLine("gmail的用户数为:{0},占{1}%", count, count / (double)matches.Count * 100); Console.WriteLine("共找到:{0}个。", matches.Count); Console.ReadKey(); #endregion } } } |