您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 统计图表 > 正则表达式的匹配和应用
主要内容正则表达式简介正则表达式匹配实例正则表达式应用什么是正则表达式定义正则表达式,就是用某种模式去匹配一类字符串的公式。应用可用于查找特定条件的字符串可用于某些工具(vi,grep,find等)中进行模式匹配和替换正则表达式基础普通字符大小写的字母和数字元字符具有特殊的含义的字符元字符(1).匹配单个字符如:r.t匹配rat,rot等*匹配0个或多个在它之前的那个字符如:r*t匹配t,rt,rrt等+匹配1或多个正好在它之前的那个字符如:r+t匹配rt、rrt等,但不匹配t\引用符,用来将元字符当作普通的字符来进行匹配如;\.匹配字符.元字符(2)?匹配0或1个在它之前的那个字符如:r?t只匹配t和rt|两个匹配条件进行逻辑“或”运算如:\(him\|her\)匹配him或者her$匹配行结束符如:boy$匹配以boy为行结尾的字符串^匹配一行的开始如:^boy匹配以boy为行首的字符串元字符(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以外的任何一个字符元字符(4)\和\匹配词(word)的开始和结束如:\the匹配them,但不匹配other如:the\匹配breathe,但不匹配other\(\)将\(和\)之间的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域(一个正则表达式中最多可以保存9个),它们可以用\1到\9的符号来引用。:%s/\(99\)/\1aa/g将99替换成99aa元字符(5)\{i\}和\{i,j\}匹配指定数目的字符,这些字符是在它之前的表达式定义的。如:正则表达式A[0-9]\{3\}能够匹配字符“A”后面跟着正好3个数字字符的串,例如A123、A348等,但是不匹配A12a4。正则表达式[0-9]\{4,6\}匹配连续的任意4个、5个或者6个数字字符。主要内容正则表达式简介正则表达式匹配实例正则表达式应用正则表达式的匹配(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等字符串相匹配正则表达式的匹配(2)^hell以“hell”,“hello”或“hellhound”开头的字符串ar$以“car”,“bar”或“ar”结尾的字符串[A-Z]A到Z范围内任何一个大写字母相匹配[a-z]从a到z范围内任何一个小写字母相匹配正则表达式的匹配(3)[0-9]从0到9范围内任何一个数字([a-z][A-Z][0-9])+任何由字母和数字组成的字符串to|too|2与目标对象中的“to”,“too”,或“2”相匹配[^A-C]与目标对象中除A,B,和C之外的任何字符相匹配主要内容正则表达式简介正则表达式匹配实例正则表达式应用正则表达式在find中的应用find/dev/–nametty[0-9]在/dev下查找以tty开头,后面跟一个数字的文件正则表达式在grep中的应用文本文件phone.txtFrancis,John5-3871Wong,Fred4-4123Jones,Thomas1-4122Salazar,Richard5-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正则表达式在vi中的应用Vi的替换命令:ranges/pat1/pat2/range是命令执行范围的指定pat1查找的一个正则表达式pat2这是希望把匹配串变成的模式的正则表达式正则表达式在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引用前面被匹配的字符)。正则表达式在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正则表达式在vi中的应用--例2:%s/\([^,]*\),\([^,]*\),/\2,\1,/g解释[^,]除了逗号之外的任何字符[^,]*0或者多个非逗号字符\([^,]*\)将这些非逗号字符标记为\1,这样可以在之后的替换模式表达式中引用它\([^,]*\),我们必须找到0或者多个非逗号字符后面跟着一个逗号,并且非逗号字符那部分要标记出来以备后用。正则表达式在vi中的应用--例3文本文件BillytriedreallyhardSallytriedreallyreallyhardTimmytriedreallyreallyreallyhardJohnnytriedreallyreallyreallyreallyhard转化为BillytriedveryhardSallytriedveryhardTimmytriedveryhardJohnnytriedveryhard正则表达式在vi中的应用--例3:%s/\(really\)\(really\)*/very/表达式\(really\)*匹配0或多个连续的really(注意结尾有个空格),而\(really\)\(really\)*匹配1个或多个连续的really实例。谢谢!
本文标题:正则表达式的匹配和应用
链接地址:https://www.777doc.com/doc-3339111 .html