.net基础加强简单小结:

         01.面向对象的三大特征:

                   继承 封装 多态

         02.过渡期的三个阶段:

                   模仿阶段

                   扶手阶段

                   创造阶段

上节复习:

         01.Path类常见的方法:

                   Path.GetDirectorys();

                   Path.GetFileName();

                   Path.GetFileNameWithoutExtention();

                  

                  

         02.什么叫深考,什么叫浅考 有什么区别:

                   深考和浅考只有在对象中有引用了类型时才区分;

                  

         03.回答:文件夹递归能否写出来:(写熟)

                  

         04.object 提供的完成浅考的方法是什么?返回什么类型,使用时注意什么?

                   public void MyClone()

                   {

                            return(MyClone)MemberwiseClone();

                   }

                   返回一个Object类型,该方法为非静态方法,在非静态类中均可找到该方法

本堂内容:

         1.正则表达式:

                   01.用途:

                            正则表达式用来进行匹配数据主要用于:

                            提取

                            比较

                            判断

                   02.定义:

                            正则表达式就是一个字符串

                            正则表达式由两部分组成:文字和通配符

                   03.元字符:

                   001.元字符1

                            通用字符:.

                                     除了换行,其他都可用其匹配

                                     表示 . 本身 \.

                            选择字符:[]

                                     一对中括号匹配一个字符

                                     即[12detrt]字符串中出现其中任何一个字符 都可匹配上

                                    

                            逻辑或:|

                                     food|foot 即匹配 food 或 foot

                                     注意 | 的优先级最低

                            优先级与分组:()

                                     用该符号来做优先级划定

                   002.限定符:

                            任意个字符  *

                                     *前面的字符出现任意次 包括零次都可匹配

                                     比如: abcd* 

                                     可匹配字符:abc abcd  abcdddddddd

                                     不可匹配的字符:a  ab

                            任意个字符: +

                                     + 前面的字符至少要出现一次才能匹配

                                     比如:

                                               abc.+

                                               可匹配:abcddd  abc多么

                                               不可匹配:abc  

                            是否有: ?

                                     http://www.123.com

                                     https://www.123.com  加密协议

                                     https?://.+   s?表示s出现一次或没有

                                     这样:

                                     http://www.123.com

                                     https://www.123.com 可匹配

                                     httpssss://www.123.com 不可匹配

                            重复次数: {}

                                     w[3] 即 w出现3次才可匹配

                                     wwwwww 可匹配, 分为两组匹配

                            至少重复n次: {n,}

                            出现n到m次:  {n,m}

                            开头:   ^

                                     ^12

                                     可匹配: ^1234defr  ^1detggs

                                     不可配: ^223

                                     在[]中使用表示不出现里面的字符

                                     [^abc]12234

                                     表示 不出现方括号内的字符时才可匹配上

                            结束:   $

                                     用法与 ^ 类似 验证是否以某字符结尾

                            简单表达式:

                                      数字与非数字

                                               \d               \D

                                     字符与非空字符

                                               \s               \S

                                     文字与非文字

                                               \w   也可匹配英文  用于去标点符号

                                               \W   

                                               注意

                                               字符串转义与C#转义

                                     .Net正则表达式与标准正则表达式

                                               d:digital

                                               s:space

                                               w:word

                           

                            匹配邮箱:

                                     [0-9a-zA-Z\._-].+@[0-9a-zA-Z\._-].+

                                     其中前方括号内限制前无汉字

                                     后方括号限定后无汉字

                                     即可从:你好mutong@live.com你好

                                     中提取: mutong@live.com

                   04.如何使用

                            1.是否匹配

                            2.字符串提取

                            3.替换

                            //如何创建正则表达式

                            string regex=@"^\d{11}$";

                            string PHNum="13126612932";

                            //实现判断

                            //使用Regex类下的IsMatch方法

                            //使用时先导入命名空间

                            if(Regex.IsMatch(PHnum,regex))

                            {

                                     ConSole.WriteLine("输入的是电话号码");

                            }

                            else

                            {

                                     ConSole.WriteLine("输入的不是电话号码");

                            }

                   001. Ismatch(intput,@"main\s*\((string[] args)?\)");

                   05.字符串的提取

                   001.Match

                            string str=@"大家好,今天是个好日子,嗯 ,9494";

                            Match m = Regex.Match("需要处理字符串",@"正则表达式");

                            返回封装后的找到的第一个与正则表达式相配的字符串

                            Match m = Regex.Match(str,@"\d+");

                            if(m.success)

                            {

                                     m.Value  为捕获到的字符串

                                     m.Index  为捕获到的字符串的位置

                                     m.Length  为捕获到的字符串的长度

                            }

                   002.Matches

                            MatchCollation ms=Regex.Matches("要处理的字符串",@"正则表达式");

                            string sentence="大家好呀,hello,2012年12月21日是个好日子。恩,9494.吼吼!886.";

            string regex = @"\d";

 

            MatchCollection mc = Regex.Matches(sentence, regex);

            for (int i = 0; i < mc.Count; i++)

            {

                if (mc[i].Success)

                {

                    Console.WriteLine(mc[i].Value);

                }

            }

                   003.Replace

                            tring sentence="大家好呀,hello,2012年12月21日是个好日子。恩,9494.吼吼!886.";

            string regex = @"\d";

            string sen=Regex.Replace(sentence, regex, @"*");

                   06.提取邮箱

                            //1.下载HTML代码

                            WebClient wc = new WebClient();

                            string html = wc.DownLoadString("网络地址");

                            //2.正则提取

                            string regex = @"[0-9a-zA-Z_]+@[0-9a-zA-Z]+(\.[0-9a-zA-Z_]+)+";

                            List<string>MyList = new List<string>{};

                            MatchCollection mc=Regex.Matches(html,regex);

                            foreach( Match m in mc )

                            {

                                     if(m.Success)

                                     {

                                               MyList.Add(m.Value);

                                     }

                            }

                            File.WriteAllLine(@"f;\0000\Email.txt",MyList.ToArray());

                           

                   07.字符串组提取:

                            Match m = Regex.Match("age=30",@"^(.+)=(.+)$");

                            if(m.Success)

                            {

                            ConSole.WriteLine(m.Group[1].Value);

                            ConSole.WriteLine(m.Group[2].Value);

                            }

                            结果为:age    30

                            1. 分组时对匹配到的一个字符串进行处理

                            2.分组的组序号从1开始,为0 的组就是value本身

                            3.分序号从左往右数” ( “第几次出现,就是第几组

                   08.贪婪模式

                            在正则表达式中,对于个数限定符(+,*,{n,}……)默认是尽可能的匹配,称为"贪婪模式";若取消该贪婪模式,在限定符后加上一个?

                            处理贪婪模式的一些情况:

                                     string str = @"123455667890";

                                     string regex = @"(.+)(.+)(.+)";

                                     正则表达式多个贪婪模式存在的时候,从左往右强度依次降低,如果是同类型贪婪模式在一起,左边最强,右边最弱,而且除了第一个最强,其他的都最弱;

                                     上例结果:第一个匹配 1-8 后两个匹配9 和0;

                                     若变为:

                                     string regex = @"(.+?)(.+)(.+)";

                                     结果 第一个匹配1,第二个匹配2-9 第三个匹配0

                           

                           

                  

                                    

         中午练习:

                   做一评论模型  屏蔽敏感词汇

                  

作业:

                   1、匹配IP地址,4段用.分割的最多三位数字。 192.168.54.77、333.333.333.333假设都是正确的。

                   2、判断是否是合法的日期格式“2008-08-08”。四位数字-两位数字-两位数字。

                   3、判断是否是合法的url地址,http://www.test.com/a.htm?id=3&name=aaa、ftp://127.0.0.1/1.txt。字符串序列://字符串序列。

                   提取组练习

                   贪婪模式的练习

        

        

        

        

        

        

        

        

posted on 2012-07-09 21:14  轻雨  阅读(239)  评论(0)    收藏  举报