《C#教程第12章正则表达式(j).ppt》由会员分享,可在线阅读,更多相关《C#教程第12章正则表达式(j).ppt(23页珍藏版)》请在三一办公上搜索。
1、第12章 正则表达式,12.1 正则表达式及其相关类12.2 Web信息浏览与搜索,12.1 正则表达式及其相关类,正则表达式提供了灵活高效的处理文本字符串的方法。正则表达式的全面模式匹配表示法使程序员可以快速分析大量文本以找到特定的字符模式;提取、编辑、替换或删除文本子字符串;也可以将提取的字符串添加到集合中。对于处理字符串的许多应用程序而言,正则表达式是不可缺少的工具。,12.1.1 正则表达式简介,正则表达式:用某种模式去匹配指定字符串的一种表示方式。正则表达式由普通字符和元字符组成。普通字符:如字母、数字、汉字等。元字符:可以匹配某些字符形式的具有特殊含义的字符,其作用类似于DOS命令
2、使用的通配符。,12.1.1 正则表达式简介(续),1.正则表达式基本书写符号,12.1.1 正则表达式简介(续),2.正则表达式限定符 限定符将可选数量的数据添加到正则表达式,下表为常用限定符:,12.1.1 正则表达式简介(续),12.1.1 正则表达式简介(续),3.匹配字符集(1)匹配字符集是预定义的用于正则表达式中的符号集。(2)如果字符串与字符集中的任何一个字符相匹配,它就会找到这个匹配项。,12.1.1 正则表达式简介(续),正则表达式中的部分匹配字符集,12.1.1 正则表达式简介(续),4.分组构造,常用分组构造形式,12.1.1 正则表达式简介(续),5.正则表达式举例(1
3、)至少1个字符:.1,(2)3个“.”句点符号:.3(3)括号括起来的23个数字构成的字符串:(0-92,3)其中的反斜杠“”表示转义。(4)必须包含“ab”的字符串:.0,ab.0,(5)以字母开头,允许包含字母、数字及下划线,长度为516:a-zA-Za-zA-Z0-9_ 5,16(6)国内电话号码:(d3-|d4-)?(d8|d7)(7)至少3个汉字:u4e00-u9fa53,12.1.2 正则表达式相关类,1.Regex类Regex 类表示不可变(只读)正则表达式类。Regex 类在命名空间下。常用方法。IsMatch方法:正则表达式在输入字符串中是否找到匹配项。Match方法:搜索下
4、一个匹配项。Matchs方法:搜索所有匹配项。,12.1.2 正则表达式相关类,2.Match类Match类表示正则表达式下一个匹配的结果,得到的结果是只读的。例如:Regex r=new Regex(abc);Match m=r.Match(123abc456);if(m.Success)Console.WriteLine(找到匹配位置:+m.Index);Console.WriteLine(找到匹配结果:+m.Value);运行结果:找到匹配位置:3 找到匹配结果:abc,12.1.2 正则表达式相关类,3.MatchCollection类MatchCollection类表示成功的非重叠匹
5、配的集合,得到的集合是只读的。例如:Regex r=new Regex(abc);MatchCollection mc=r.Matches(123abc4abcd);int count=mc.Count;String results=new Stringcount;int matchPosition=new intcount;for(int i=0;i count;i+)resultsi=mci.Value;matchPositioni=mci.Index;Console.WriteLine(第0个匹配结果:1,位置:2,i+1,resultsi,matchPositioni);运行结果:第1
6、个匹配结果:abc,位置:3 第2个匹配结果:abc,位置:7,12.1.2 正则表达式相关类,4.Group类Group类表示单个捕获组的结果。当与正则表达式匹配的字符串有多组时,可以使用该类得到某一组的结果。,12.1.2 正则表达式相关类,【例12-1】编写一个Windows应用程序,输入某个正则表达式和一个字符串,然后验证该字符串中是否包含与正则表达式匹配的内容。,12.1.2 正则表达式相关类,【例12-2】编写一个Windows应用程序,利用正则表达式验证用户注册信息是否符合要求。,12.2 Web信息浏览与搜索,12.2.1 WebBrower控件通过此控件可以在 Windows
7、 窗体客户端应用程序中显示网页,复制应用程序中的 Internet Explorer Web 浏览功能,禁用默认的 Internet Explorer 功能,并将该控件用作简单的 HTML 文档查看器等。,12.2.1 WebBrower控件,【例12-3】使用WebBrowser控件创建一个简易浏览器。,12.2.2 利用正则表达式搜索Web资源,WebClient类 在System.Net命名空间下的WebClient类提供向URI标识的任何本地、Intranet或Internet资源发送数据以及从这些资源接收数据的公共方法。通过此类从Web站点下载文件两种方式:1.直接保存为本地文件 2
8、.通过流进行读取,具体采用哪种方式要视情况而定。,12.2.2 利用正则表达式搜索Web资源,DownloadFile方法 该方法有两个参数:URI和本地保存路径。如:WebClient myWebClient=new WebClient();myWebClient.DownloadFile(http:/C:test.htm);OpenRead方法 此方法返回一个Stream引用,然后可以从数据流中读取数据,如:using System.Net;using System.IO;,12.2.2 利用正则表达式搜索Web资源,WebClient webClient=new WebClient();
9、Stream myStream=webClient.OpenRead(http:/);StreamReader sr=new StreamReader(myStream);string httpSource=sr.ReadToEnd();DownloadString方法 直接读取包含网页源代码的字符串内容。例如:using System.Net;WebClient client=new WebClient();string reply=client.DownloadString(Http:/);Console.WriteLine(reply);,12.2.2 利用正则表达式搜索Web资源,【例12-4】设计一个简单的搜索程序,能读取指定网址的html源文件,并能用正则表达式搜索包含的超链接与图片。设计界面如图:,12.2.2 利用正则表达式搜索Web资源,例12-4 运行效果:,