正则表达式

 
在C#看来@"\-"就是\-这个普通的字符串,只不过在正则表达式分析引擎看来他有了特殊含义。"\\d"或者@"\d"

元字符
. 匹配任意单个字符
* 匹配前面内容出现0或多次
+ 一或多次
? 0或一次
[] 匹配[]中的字符出现一次[0-9] [a-z]
() 改变正则优先级 (zo)+ zo出现1或多次
| 或 z|food 匹配z或food (z|f)ood 匹配 zood或food
{n} 出现n次
{n,} 至少出现n次,最多不限
{n,m} 至少出现n次,最多出现m次
^ 以谁开头 取反
$ 以谁结尾

•\d:代表一个数字,等同于[0-9]
•\D:代表非数字,等同于[^0-9]
•\s:代表换行符、Tab制表符等空白字符
•\S:代表非空白字符
•\w:匹配字母或数字或下划线或汉字,即能组成单词的字符
•\W:非\w ,等同于[^\w]
 d:digital;s:space、w:word。大写就是“非”
 
给分组命名用?<>
贪婪的要在+后面加?就是非贪婪了 
 
RegexOptions是枚举类型,里面可以选择忽略大小写,单行模式,多行模式。。。
Regex
            Regex regex = new Regex("这里写正则",RegexOptions.IgnoreCase);
            Match match = regex.Match("要比配的字符串");
            if (match.Success)
            {
                Console.WriteLine(match.Value); 
            }
分组匹配
            Match match = Regex.Match("内容", @"正则", RegexOptions.Singleline);
            if (match.Success)
            {
                Console.WriteLine(match.Groups[0]);
                Console.WriteLine(match.Groups[1]);
            }

 

我们可以用正则把网页的图片抓取过来,自己做个图片采集器

View Code
            string url = "http://image.baidu.com/i?tn=list&word=liulan#%E7%BE%8E%E5%A5%B3|%E5%85%A8%E9%83%A8|0";
            string reg=@"thumbURL"":""(?<src>.+?)""";
            WebClient wc = new WebClient();
            string content=null;
            using (Stream stream = wc.OpenRead(url))
            {
                using (StreamReader sr = new StreamReader(stream, Encoding.UTF8))
                {
                    string line;
                    while ((line = sr.ReadLine())!=null)
                    {
                        content+=line;
                    }
                }
            }
            MatchCollection matchs = Regex.Matches(content, reg);
            foreach (Match match in matchs)
            {
                if (match.Success)
                {
                     url = match.Groups["src"].Value;
                     string a = Path.GetFileName(url);
                     wc.DownloadFile(url, "d:\\Image" + a);
                }
            }

 

 

 

 

 

 

 

posted on 2012-12-09 15:12  何金洋  阅读(151)  评论(0编辑  收藏  举报