正则表达式的匹配和应用_第1页
正则表达式的匹配和应用_第2页
正则表达式的匹配和应用_第3页
正则表达式的匹配和应用_第4页
正则表达式的匹配和应用_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

正则表达式的匹配和应用第一页,共二十三页,2022年,8月28日主要内容正则表达式简介正则表达式匹配实例正则表达式应用第二页,共二十三页,2022年,8月28日什么是正则表达式定义正则表达式,就是用某种模式去匹配一类字符串的公式。应用可用于查找特定条件的字符串可用于某些工具(vi,grep,find等)中进行模式匹配和替换第三页,共二十三页,2022年,8月28日正则表达式基础普通字符大小写的字母和数字元字符具有特殊的含义的字符第四页,共二十三页,2022年,8月28日元字符(1).匹配单个字符如:r.t匹配rat,rot等*匹配0个或多个在它之前的那个字符

如:r*t匹配t,rt,rrt等+匹配1或多个正好在它之前的那个字符如:r+t匹配rt、rrt等,但不匹配t\引用符,用来将元字符当作普通的字符

来进行匹配

如;\.匹配字符.第五页,共二十三页,2022年,8月28日元字符(2)?匹配0或1个在它之前的那个字符

如:r?t只匹配t和rt|两个匹配条件进行逻辑“或”运算

如:\(him\|her\)匹配him或者her

$匹配行结束符

如:boy$匹配以boy为行结尾的字符串^匹配一行的开始

如:^boy

匹配以boy为行首的字符串第六页,共二十三页,2022年,8月28日元字符(3)[]匹配括号中的任何一个字符

如:r[aou]t匹配rat,rot,rut[c1-c2]括号中可以使用连字符-来指定

字符的区间

如:[0-9]

匹配0,1,2,3,4,5,6,7,8,9[^c1-c2]匹配除了指定区间之外的字符(补集)如:[^269A-C]

匹配除了2,6,9,A,B,C以外的任何一个字符

第七页,共二十三页,2022年,8月28日元字符(4)\<和\>

匹配词(word)的开始和结束

如:\<the匹配them,但不匹配other

如:the\>匹配breathe,但不匹配other\(\)

将\(和\)之间的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域(一个正则表达式中最多可以保存9个),它们可以用

\1

到\9

的符号来引用。:%s/\(99\)/\1aa/g将99替换成99aa第八页,共二十三页,2022年,8月28日元字符(5)\{i\}和\{i,j\}匹配指定数目的字符,这些字符是在它之前的表达式定义的。如:正则表达式A[0-9]\{3\}

能够匹配字符“A”后面跟着正好3个数字字符的串,例如A123、A348等,但是不匹配A12a4。正则表达式[0-9]\{4,6\}

匹配连续的任意4个、5个或者6个数字字符。

第九页,共二十三页,2022年,8月28日主要内容正则表达式简介正则表达式匹配实例正则表达式应用第十页,共二十三页,2022年,8月28日正则表达式的匹配(1)fo+可以与目标对象中的

“fool”,“fo”,或者

“football”等在字母f后面连续出现一个或多个字母o的字符串相匹配

eg*与目标对象中的

“easy”,“ego”,或者

“egg”等在字母e后面连续出现零个或多个字母g的字符串相匹配

Wil?与目标对象中的”Win”,“Wilson”等在字母i后面连续出现零个或一个字母l的字符串相匹配

Jim\{2,6\}规定字符m可以在匹配对象中连续出现2-6次,可以同jimmy或jimmmmmy等字符串相匹配第十一页,共二十三页,2022年,8月28日正则表达式的匹配(2)^hell以

“hell”,“hello”或

“hellhound”开头的字符串

ar$以

“car”,“bar”或

“ar”

结尾的字符串

[A-Z]A到Z范围内任何一个大写字母相匹配

[a-z]从a到z范围内任何一个小写字母相匹配

第十二页,共二十三页,2022年,8月28日正则表达式的匹配(3)[0-9]从0到9范围内任何一个数字

([a-z][A-Z][0-9])+任何由字母和数字组成的字符串to|too|2与目标对象中的

“to”,“too”,或

“2”

相匹配

[^A-C]与目标对象中除A,B,和C之外的任何字符相匹配

第十三页,共二十三页,2022年,8月28日主要内容正则表达式简介正则表达式匹配实例正则表达式应用第十四页,共二十三页,2022年,8月28日正则表达式在find中的应用find/dev/–nametty[0-9]在/dev下查找以tty开头,后面跟一个数字的文件第十五页,共二十三页,2022年,8月28日正则表达式在grep中的应用文本文件phone.txtFrancis,John

5-3871Wong,Fred

4-4123Jones,Thomas

1-4122Salazar,Richard

5-2522grep命令1)grep'^S[^]*R'phone.txt2)grep'^[JW]'phone.txt3)grep-v'^[JW]'phone.txt4)grep'^[M-Z]'phone.txt5)grep'^[M-Z].*[12]'phone.txt第十六页,共二十三页,2022年,8月28日正则表达式在vi中的应用Vi的替换命令:ranges/pat1/pat2/range是命令执行范围的指定

pat1查找的一个正则表达式

pat2这是希望把匹配串变成的模式的正则表达式

第十七页,共二十三页,2022年,8月28日正则表达式在vi中的应用--例1:%s/*//g把一个或者多个空格替换为一个空格。:%s/*$//去掉行尾的所有空格。:%s/^//在每一行头上加入一个空格。:%s/^[0-9][0-9]*//

去掉行首的所有数字字符。:%s/b[aeio]g/bug/g将所有的bag、beg、big和bog改为bug。:%s/t\([aou]\)g/h\1t/g将所有tag、tog和tug分别改为hat、hot和hug(注意用group的用法和使用\1引用前面被匹配的字符)。第十八页,共二十三页,2022年,8月28日正则表达式在vi中的应用--例2将a,b,c的实例改为b,a,c之前

10,7,2x+13,y-2,10bar(8),x+y+z,5之后7,10,2y-2,x+13,10x+y+z,bar(8),5第十九页,共二十三页,2022年,8月28日正则表达式在vi中的应用--例2:%s/\([^,]*\),\([^,]*\),/\2,\1,/g

解释[^,]

除了逗号之外的任何字符[^,]*0或者多个非逗号字符\([^,]*\)将这些非逗号字符标记为\1,这样可以在之后的替换模式表达式中引用它\([^,]*\),我们必须找到0或者多个非逗号字符后面跟着一个逗号,并且非逗号字符那部分要标记出来以备后用。第二十页,共二十三页,2022年,8月28日正则表达式在vi中的应用--例3文本文件Billytriedreallyhard

Sallytriedreallyreallyhard

Timmytriedreallyreallyreallyhard

Johnnytriedreallyreallyreallyreallyhard转化为Billytriedveryhard

Sallytriedveryhard

Timmytriedveryhard

Johnnytriedveryhard第二十一页,共二十三页,2022年,8月28日正则表达式在vi中的应用

温馨提示

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

评论

0/150

提交评论