正则表达式_图文_第1页
正则表达式_图文_第2页
正则表达式_图文_第3页
正则表达式_图文_第4页
正则表达式_图文_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 1附加附加正则表达式及其相关类正则表达式及其相关类2 2正则表达式概念及发展史正则表达式概念及发展史正则表达式的概念:在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来查找或替换那些符合某个模式的文本内容。 正则表达式的发展:正则表达式的“鼻祖”或许可一直追溯到科学家对人类神经系统工作原理的早期研究。上世纪50年代,美国新泽西州的Warren McCulloch和出生在美国底特律的Walter Pitts这两位神经生理方面的科学家,研究出了一种用数学方式来描述神经网络的新方法,他们创新地将神经系统中的神经元

2、描述成了小而简单的自动控制元, 从而作出了一项伟大的工作革新。 比如,正则表达式(regular expression)就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个特征。比如 表达式“ab+” 描述的特征是“一个 a 和 任意个 b ”,那么 ab, abb, abbbbbbbbbb 都符合这个特征。 3 3正则表达式概念及发展史正则表达式概念及发展史( (续续) )在最近的六十年中,正则表达式逐渐从模糊而深奥的数学概念,发展成为在计算机各类工具和软件包 应用中的主要功能。不仅仅众多UNIX工具支持正则表达式,近二十年来,在WINDOW的阵营下,正则表达式的思想和

3、应用在大部分 Windows 开发者工具包中得到支持和嵌入应用! 从正则式在Microsoft Visual Basic 6 或 Microsoft VBScript到.NET Framework中的探索和发展,WINDOWS系列产品对正则表达式的支持发展到无与伦比的高度,目前几乎所有 Microsoft 开发者和所有.NET语言都可以使用正则表达式! 简言之,一个简言之,一个正则表达式正则表达式,就是用,就是用某种模式某种模式去匹配一类字符串的一个去匹配一类字符串的一个公式公式。 之后一段时间,人们发现可以将这一工作成果应用于其他方面。Ken Thompson就把这一成果应用于计算搜索算法的

4、一些早期研究,Ken Thompson是 Unix的主要发明人,也就是大名鼎鼎的Unix之父。Unix之父将此符号系统引入编辑器QED,然后是Unix上的编辑器ed,并最终引入grep。 4 4正则表达式及其相关类正则表达式及其相关类正则表达式提供了灵活高效的处理文本字符串的正则表达式提供了灵活高效的处理文本字符串的方法。方法。正则表达式的全面模式匹配表示法使程序员可以正则表达式的全面模式匹配表示法使程序员可以快速分析大量文本以找到特定的字符模式;提取、快速分析大量文本以找到特定的字符模式;提取、编辑、替换或删除文本子字符串;也可以将提取编辑、替换或删除文本子字符串;也可以将提取的字符串添加到

5、集合中。的字符串添加到集合中。对于处理字符串的许多应用程序而言,正则表达对于处理字符串的许多应用程序而言,正则表达式是不可缺少的工具。式是不可缺少的工具。5 51 1 正则表达式简介正则表达式简介正则表达式:正则表达式: 用某种模式去匹配指定字符串的一种表示方式。用某种模式去匹配指定字符串的一种表示方式。正则表达式由正则表达式由普通字符普通字符和和元字符元字符组成。组成。普通字符普通字符:如字母、数字、汉字等。:如字母、数字、汉字等。元字符元字符:可以匹配某些字符形式的具有特殊含义:可以匹配某些字符形式的具有特殊含义的字符,其作用类似于的字符,其作用类似于DOSDOS命令使用的通配符。命令使用

6、的通配符。6 61 1 正则表达式简介正则表达式简介( (续续) ) 正则表达式基本书写符号正则表达式基本书写符号符号符号 含义含义示例示例解释解释匹配输入匹配输入 转义符转义符 * * 符号符号“* *” * * 可接收的字符列表可接收的字符列表 efghefgh e e、f f、g g、h h中的任意中的任意1 1个个字符字符e e、f f、g g、h h 不接收的字符列表不接收的字符列表 abcabc 除除a a、b b、c c之外的任意之外的任意1 1个个字符,包括汉字、数字和字符,包括汉字、数字和特殊符号特殊符号 m m、q q、5 5、* * | |匹配匹配“| |”之前或之前或之

7、后的表达式之后的表达式 ab|cdab|cd abab或者或者cdcdabab、cdcd( ) ( ) 将子表达式分组将子表达式分组 ( (abcabc) ) 将字符串将字符串abcabc作为一组作为一组 abcabc - - 连字符连字符 A-Z A-Z 任意单个大写英文字母任意单个大写英文字母 大写字母大写字母 7 71 1 正则表达式简介正则表达式简介( (续续) )2.2.正则表达式限定符正则表达式限定符 限定符将可选数量的数据添加到正则表达式,下表为常用限定符:限定符将可选数量的数据添加到正则表达式,下表为常用限定符:符号符号 含义含义示例示例解释解释匹配输入匹配输入不匹配输入不匹配

8、输入* * 指定字符重指定字符重复复0 0次或次或n n次次 (abc)(abc)* *仅包含任意个仅包含任意个abcabc的的字符串字符串abcabc、abcaabcabcabcbcabca a、abcaabca+ + 指定字符重指定字符重复复1 1次或次或n n次次m+(abc)m+(abc)* * 以至少以至少1 1个个m m开头,后开头,后接任意个接任意个abcabc的字符的字符串串 m m、mabcmabc、mabcabcmabcabcmama、abcabc? 指定字符重指定字符重复复0 0次或次或1 1次次m+abc? m+abc? 以至少以至少1 1个个m m开头,后开头,后接接

9、abab或或abcabc的字符串的字符串mabmab、mabcmabc、mmmabmmmab、mmmmabcabcabab、abcabc、mabccmabccn n 只能输入只能输入n n个个字符字符 abcdabcd3 3 由由abcdabcd中字母组成的中字母组成的任意长度为任意长度为3 3的字符的字符串串 abcabc、dbcdbc、adcadca a、aaaa、d dcbdcbd8 81 1 正则表达式简介正则表达式简介( (续续) )符号符号 含义含义示例示例解释解释匹配输入匹配输入不匹配输入不匹配输入n, n, 指定至指定至少少 n n 个个匹配匹配 abcd3, abcd3, 由

10、由abcdabcd中字母组成中字母组成的任意长度不小于的任意长度不小于3 3的字符串的字符串 aabaab、dbcdbc、aaabdcaaabdca a、cdcd、bbbb n,mn,m 指定至指定至少少 n n 个个但不多但不多于于 m m 个个匹配匹配 abcd3,abcd3,55由由abcdabcd中字母组成中字母组成的任意长度不小于的任意长度不小于3 3,不大于不大于5 5的字符串的字符串abcabc、abcdabcd、aaaaaaaaaa、bcbcdabdababab、abababababab、a a 指定起指定起始字符始字符0-9+a0-9+a-z-z* *以至少以至少1 1个数字

11、开头,个数字开头,后接任意个小写字后接任意个小写字母的字符串母的字符串123123、6aa6aa、555edf555edfabcabc、aaaaaa、a33a33$ $指定结指定结束字符束字符0-9-0-9-a-z+$a-z+$以以1 1个数字开头后接个数字开头后接连字符连字符“”,并,并以至少以至少1 1个小写字母个小写字母结尾的字符串结尾的字符串2-a2-a、3-dd3-ddd d、5-efg5-efg33a33a、8-8-、7 7-Ab-Ab9 91 1 正则表达式简介正则表达式简介( (续续) )3. 3. 匹配字符集匹配字符集 (1) (1) 匹配字符集是预定义的用于正则表达式中的符

12、匹配字符集是预定义的用于正则表达式中的符号集。号集。 (2) (2) 如果字符串与字符集中的任何一个字符相匹配,如果字符串与字符集中的任何一个字符相匹配,它就会找到这个匹配项。它就会找到这个匹配项。10101 1 正则表达式简介正则表达式简介( (续续) )符号符号 含义含义示例示例解释解释匹配输入匹配输入不匹配输入不匹配输入. . 匹配除匹配除 n n 以外以外的任何字符的任何字符 a.b a.b 以以a a开头,开头,b b结尾,中结尾,中间包括间包括2 2个任意字符的个任意字符的长度为长度为4 4的字符串的字符串 aaabaaab、aefbaefb、a35ba35b、a#a#* *b b

13、 abab、aaaaaaaa、a a347b 347b d d 匹配单个数字字匹配单个数字字符,相当于符,相当于0-90-9d3(d)?d3(d)?包含包含3 3个或个或4 4个数字的个数字的字符串字符串123123、987698761212、0102301023D D 匹配单个非数字匹配单个非数字字符,相当于字符,相当于00-9-9D(d)D(d)* *以单个非数字字符开以单个非数字字符开头,后接任意个数字头,后接任意个数字字符串字符串a a、A342A342aaaa、AA78AA78、1 1234234w w 匹配单个数字、匹配单个数字、大小写字母和汉大小写字母和汉字字符字字符d3w4d3

14、w4以以3 3个数字字符开头的个数字字符开头的长度为长度为7 7的字符串的字符串234abcd234abcd、1212345Pe345Pe58a58a、Ra46Ra46WW匹配单个除汉字、匹配单个除汉字、字母、数字以外字母、数字以外的其他字符的其他字符W+d2W+d2以至少以至少1 1个个非数字、字非数字、字母和汉字的字符母和汉字的字符开头,开头,2 2个数字字符结尾的字个数字字符结尾的字符串符串#29#29、#?10#?102323、#?100#?100正则表达式中的部分匹配字符集正则表达式中的部分匹配字符集 11111 1 正则表达式简介正则表达式简介( (续续) )4. 4. 分组构造分

15、组构造分组构造分组构造 说明说明 ( )( )非命名捕获。捕获匹配的子字符串(或非捕获非命名捕获。捕获匹配的子字符串(或非捕获组)。编号为零的第一个捕获是由整个正则表组)。编号为零的第一个捕获是由整个正则表达式模式匹配的文本,其它捕获结果则根据左达式模式匹配的文本,其它捕获结果则根据左括号的顺序从括号的顺序从1 1开始自动编号。开始自动编号。 (?)(?)命名捕获。将匹配的子字符串捕获到一个组名命名捕获。将匹配的子字符串捕获到一个组名称或编号名称中。也可以用单引号替代尖括号,称或编号名称中。也可以用单引号替代尖括号,例如例如 (?name) (?name) 常用分组构造形式常用分组构造形式12

16、121 1 正则表达式简介正则表达式简介( (续续) )5. 5. 正则表达式举例正则表达式举例(1 1)至少)至少1 1个字符:个字符:.1, .1, (2 2)3 3个个“.”.”句点符号:句点符号:.3.3(3 3)括号括起来的)括号括起来的2 23 3个数字构成的字符串:个数字构成的字符串:(0-92,3) (0-92,3) 其中的反斜杠其中的反斜杠“”表示转义。表示转义。(4 4)必须包含)必须包含“abab”的字符串:的字符串:.0,ab.0,.0,ab.0,(5 5)以字母开头,允许包含字母、数字及下划线,长度为)以字母开头,允许包含字母、数字及下划线,长度为5 51616:a-

17、zA-Za-zA-Z0-9_ 5,16a-zA-Za-zA-Z0-9_ 5,16(6 6)国内电话号码:)国内电话号码:( d3-| d4-)?( d8| d7)( d3-| d4-)?( d8| d7)(7 7)至少)至少3 3个汉字:个汉字:u4e00-u9fa53,u4e00-u9fa53,13132 2 正则表达式相关类正则表达式相关类RegexRegex类类RegexRegex 类表示不可变(只读)正则表达式类。类表示不可变(只读)正则表达式类。RegexRegex 类在类在System.Text.RegularExpressionsSystem.Text.RegularExpres

18、sions命名空间下。命名空间下。常用方法。常用方法。IsMatchIsMatch方法:方法:正则表达式在输入字符串中是否找到匹配正则表达式在输入字符串中是否找到匹配项。项。MatchMatch方法:搜索下一个匹配项。方法:搜索下一个匹配项。MatchsMatchs方法:搜索所有匹配项。方法:搜索所有匹配项。14142 2 正则表达式相关类正则表达式相关类2.Match2.Match类类 Match Match类表示正则表达式下一个匹配的结果,得到的结果是类表示正则表达式下一个匹配的结果,得到的结果是只读只读的。例如:的。例如: RegexRegex r = new r = new Regex

19、(abcRegex(abc);); Match m = r.Match(123abc456); Match m = r.Match(123abc456); if ( if (m.Successm.Success) ) Console.WriteLineConsole.WriteLine(找到匹配位置:找到匹配位置: + + m.Indexm.Index);); Console.WriteLineConsole.WriteLine(找到匹配结果:找到匹配结果: + + m.Valuem.Value);); 运行结果:运行结果: 找到匹配位置:找到匹配位置:3 3 找到匹配结果:找到匹配结果:ab

20、cabc15152 2 正则表达式相关类正则表达式相关类3.MatchCollection3.MatchCollection类类MatchCollectionMatchCollection类表示成功的非重叠匹配的集合,得到的集合是只读的。类表示成功的非重叠匹配的集合,得到的集合是只读的。例如:例如: RegexRegex r = new r = new Regex(abcRegex(abc);); MatchCollectionMatchCollection mc = r.Matches(123abc4abcd); mc = r.Matches(123abc4abcd); intint cou

21、nt = count = mc.Countmc.Count; ; String results = new String results = new StringcountStringcount; intint matchPositionmatchPosition = new = new intcountintcount; for ( for (intint i = 0; i count; i+) i = 0; i count; i+) resultsiresultsi = = mci.Valuemci.Value; ; matchPositionimatchPositioni = = mci

22、.Indexmci.Index; ; Console.WriteLineConsole.WriteLine(第第00个匹配结果:个匹配结果:11,位置:,位置:2,i+1,2,i+1, resultsiresultsi, , matchPositionimatchPositioni);); 运行结果:运行结果: 第第1 1个匹配结果:个匹配结果:abcabc,位置:,位置:3 3 第第2 2个匹配结果:个匹配结果:abcabc,位置:,位置:7 716162 2 正则表达式相关类正则表达式相关类4. Group4. Group类类GroupGroup类表示单个捕获组的结果。当与正则表达式匹配的

23、类表示单个捕获组的结果。当与正则表达式匹配的字符串有多组时,可以使用该类得到某一组的结果。字符串有多组时,可以使用该类得到某一组的结果。17172 2 正则表达式相关类正则表达式相关类【例例12-112-1】编写一个编写一个WindowsWindows应用程序,输入某个正则表达式和应用程序,输入某个正则表达式和一个字符串,然后验证该字符串中是否包含与正则表达式匹一个字符串,然后验证该字符串中是否包含与正则表达式匹配的内容。配的内容。18182 2 正则表达式相关类正则表达式相关类【例例12-212-2】编写一个编写一个WindowsWindows应用程序,利用正则表达式验证应用程序,利用正则表达式验证用户注册信息是否符合要求。用户注册信息是否符合要求。 TextB oxN am e textB oxA ge textB oxPassw ord labelN am e labelA ge labelPassw ord buttonO K 1919/更改textBoxName

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论