正则表达式和字符串处理_第1页
正则表达式和字符串处理_第2页
正则表达式和字符串处理_第3页
正则表达式和字符串处理_第4页
正则表达式和字符串处理_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、正则表达式和字符串处理第一章正则表达式概述正则表达式源于对人类神经系统的研究。正则表达式定义如下:l与一系列字符串匹配的模式,主要用于说明字符串匹配。l说明字符串匹配模式。您可以检查字串是否包含子字串、取代相符的子字串或移除符合条件的子字串等。l正则表达式是由普通字符(a-z)和特殊字符(元字符)组成的文本模式,它是将字符模式与要搜索的字符串相匹配的一种模板。l用于说明某些规则的工具。这些规则经常用于处理字符串中的查找或替换字符串。也就是说,规则运算式是记录文字规则的程式码。l使用一个字符串描述一个要素,然后验证另一个字符串是否适合该要素。这些定义实际上是正则表达式的作用。第二章正则表达式的基

2、本理论这些理论提供了规则和规范,主要由以下基本理论组成:l元字符l字符串l字符转义l反义l限定符l替代l组l翻转参考l宽度0断言l匹配选项l注释l优先级顺序l递归匹配2.1元字符在正则表达式中,元字符(Metacharacter)是非常特殊的字符类,与一个位置或字符集中的一个字符(例如,w等)匹配。根据功能的不同,元字符可以分为两种类型:匹配位置处的元字符和匹配字符的元字符。匹配2.1.1位置的元字符包含:$、和 B,其中$(脱字字元)和$(美元符号)会分别寻找与行开头和结尾相符的位置。例如,string匹配以string开头的行,string$匹配以string结尾的行。String $查找

3、以String开头和结尾的行。单个$匹配一个空行。单个匹配任意行。b匹配单词的开头和结尾,如下所示:bstr匹配以str开头的单词,但b不匹配空格、标点符号或换行符,因此bstr可以匹配string、string fomat等单词。bstr正则表达式匹配的字符串必须以str开头,str以前是单词的边界点,但是此正则表达式不能限定str之后的字符串形式。下列规则运算式比对以ing结尾的字串,例如string、This is a string等Ingb正则表达式ingb匹配的字符串必须以ing结尾。如果ing后接边界字符,则下一个正则表达式将匹配整个单词:bstringb。与2.1.2字符中的元字

4、符匹配匹配字符的元字符包括7个:(点编号)、w、W、s、S、d和D。其中,点编号与除换行符外的所有字符匹配。w匹配单词字符(包括字母、汉字、下划线和数字)。与W单词以外的任何字符匹配; s与空格、制表符、换行符等任意空格字符匹配;S匹配任何非空格字符。d匹配任意数字。D匹配任何非数字字符。例如:.$与可包含除换行符外的所有字符的非空行匹配。 w $与单个非空行匹配,只能包含字母、数字、下划线和汉字的任意字符。bawwwwwwb查找长度等于7的任意单词(以字母a开头) ba w w w d d d D查找以字母a开头、3个字母3个数字和1个非数字字符长度为8的单词2.2字符类字符类是匹配该字符集

5、的任何字符时可以找到的字符集合。可以在(方括号)中定义字符类。例如:012345可以与数字0到5中的任何数字匹配。您可以匹配HTML标签的H1到H6。Jjack可以与字符串jack或Jack匹配。但是,由于0123456789表达式非常不便于写入,因此应用了连字符(-),因此0-9相当于0123456789。a-z匹配所有小写字母,A-Z匹配任意大写字母。如果要在字符类中包含连字符,则必须将其包含在第一个位置,例如匹配表达式-或表示a的-a。如果在字符类中是字符类中的第一个字符,则否定字符串。例如:ABC匹配ABC以外的任何字符,-匹配连字符以外的字符,a b匹配a后的非b字符串。表2-1中常

6、用的字符类文字或表达式说明w匹配单词字符(包括字母、数字、下划线和汉字)W匹配任意单词以外的字符(包括字母、数字、下划线和汉字)s符合任何空格字元,例如空格、定位点、换行符号、全形空格等S匹配任意非空格字符d匹配任意数字D匹配任意非数字字符abc匹配字符集中的所有字符ABC匹配除字符集中包含字符的字符以外的任何字符0-9a-z_A-Z_寻找数字、文字和底线。与w相同pname匹配指定命名字符类中的所有字符Pnamename匹配指定命名字符类以外的所有字符.匹配除换行符外的所有字符0-9a-za-z _与W相同2.3字元跳脱表2-2:一般转义符表达式可以匹配 r n表示回车和换行t制表符代表在后

7、面的章节里,还有一个特殊用途的标点符号,前面加表示符号本身。例如:$必须将表达式写入为“”和“ $”,才能匹配字符串中的“”和“$”字符。表达式可以匹配 匹配符号本身 $匹配$符号本身。小数点(.)本身2.4反义使用正则表达式时,如果需要匹配不在字符类指定范围内的字符,则可以使用反义规则。实际上,我们使用了W、S、D、ABC等反义表达式。常用反义表包括:表2-3:常用反义表达式文字或表达式说明W匹配字母、数字、下划线和非汉字的任意字符S匹配任意非空格字符D匹配任意非数字字符B匹配不是单词开头或结尾的位置x匹配除x以外的任何字符aeiou匹配除Aeiou以外的所有字符2.4限定符正则表达式中的元

8、字符一次只能匹配一个位置或一个字符,如果需要匹配零个或多个字符,则需要限定符。限定符用于指定允许特定字符或字符集本身重复的次数。例如,n表示n次。n,表示至少重复n次;n,m表示至少发生n次再来m次。常用限定符如下表所示:表2-4:通用限定符文字说明* *匹配前面的子表达式零次或多次。例如,zo*可以匹配“z”和“zoo”。*对应于0,。匹配前面的子表达式一次或多次。例如,zo可以匹配“zo”和“zoo”,但不能匹配“z”。对应于1,。-嗯?匹配前面的子表达式零次或一次。例如,“do(es)?”可以与“Do”或“does”中的“do”匹配。-嗯?对应于0,1。nn是非负整数。确认的n次匹配。例

9、如,o2与“Bob”中的o不匹配,但与“food”中的o匹配。n,n是非负整数。至少匹配n次。例如,o2,不能匹配“Bob”中的o,但可以匹配“foooood”中的所有o。O1,对应于o。O0,对应于o*。n,mm和n都是非负整数。其中n=m。最小n次和最大m次匹配。流,“o1,3”将与“fooooood”的前三个o匹配。O0,1是否等于o?即可从workspace页面中移除物件。逗号和两个数字之间不能有空格。*?使用尽可能少的第一个重复匹配-嗯?尽可能少使用,但至少使用一次-嗯?-嗯?如果可能,请使用0或1次迭代。n?与n相同n,?尽可能少使用,但至少重复n次n,m?在n和m次之间尽可能少地

10、重复使用。2.5贪婪、惰性和支配性一致惰性匹配:首先检查字符串中的第一个字符是否匹配,如果单个字符不够,则读取下一个字符,如果未找到匹配项,则继续从下一个字符读取,仅找到一个有效匹配项,然后开始下一个匹配项。贪心匹配:首先检查整个字符串是否匹配,如果找不到匹配,则删除字符串的最后一个字符,然后重试。如果找不到匹配项,则再次删除最后一个字符,重复此过程,直到找到匹配项或字符串中没有剩下任何字符。支配匹配:仅尝试匹配整个字符串。如果整个字符串无法创建一个匹配,则不再尝试。字符类后面的问号(?)是懒惰的匹配,要成为支配的匹配,懒惰的匹配后的问号(?)。2.6更换正则表达式0d2-d8和0d3-d7分

11、别匹配区号为3个字符和4个字符的固定电话号码,如果需要匹配区号为3个字符和4个字符的固定电话号码,则可以使用替换来解决此要求。最简单的替换用竖线(|)表示。以下表达式匹配区号为3位8位和4位号码为7位的电话号码,区号和号码为-连接,0d2-d8|0d3-d7表2-5一般替代文字或表达式说明|定位垂直杆(|)的左侧或右侧(?(表达式)yes|no表达式与yes部分匹配或与no部分匹配,其中no部分可以省略。(?(name)yes|no)名为Name的字符串与yas部分匹配,或与no部分PP匹配。可以省略此处的no部分2.7组分组也称为子表达式。也就是说,将正则表达式的全部或部分分成一个或多个组。

12、其中,分组使用圆括号()进行分组,括号中的表达式作为整体进行处理。例如, (ABC) 1,2表示ABC出现一次或两次的字符串。其中ABC是完全匹配的。2.8反向参考规则运算式群组后,会自动为每个群组指定代表群组运算式的群组编号。其中,组编号从左到右,组的左括号,第一个组编号为1,第二个组编号为2,依此类推。例如:(a?(b?(c?)生成三个组编号。第一组是:(a?(b?(c?);第二组是:(b?(c?);第三组是:(C?)。逆向引用提供了一种查找重复字符组的简便方法。逆向引用可以使用数字命名(默认名称),也可以使用指定的组编号。例如:b(w)1b查找b(w)wb等两个相同的单词。此表示式可以有

13、两个不同的字元。b(w)(d)12b再次查看,匹配一个字母和数字,然后重复字母和数字。bw*(w )1b查找至少以两个字符结尾的单词。b(w )bs 1b匹配此正则表达式的具体过程如下:A.表达式b(w )b匹配一个单词,单词长度至少为1B.表达式s匹配一个或多个空格字符C.表达式1将子表达式(w)匹配的内容与重复的单词匹配D.匹配单词的结束位置。分组除了可以使用数字作为组编号外,还可以使用用户名作为组编号。以下两个正则表达式都将分组的子表达式w命名为word:(?w)(?Word w)因此,b(w )bs 1b和以下正则表达式相同,并匹配重复的单词:b(? w b s k b表2-5反向参考

14、说明表表达式说明数字以数字命名的反向引用k使用指定的命名反向参照表2-6一般分组说明文字说明(expression)匹配字符串expression,并将匹配的文本自动存储在命名的组中(?Expression)匹配字符串expression,并将匹配的文本存储在名为name的变量中,该变量不能包含不能以数字开头的标点。(?expression)与字符串expression匹配,不保存匹配的文本,也不分配组编号(?Expression)匹配项后面不是字符串expression的位置(?=expression)符合字串expression之前的位置(?=expression)符合字串expression后面的位置(?Expression)仅与Expression匹配一次2.9宽度零点断言元字符、b、$都与一个位置匹配,该位置满足特定条

温馨提示

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

评论

0/150

提交评论