欢迎来到天天文库
浏览记录
ID:59011862
大小:1.15 MB
页数:33页
时间:2020-09-26
《第六讲 正则表达式ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、正则表达式2011-03-21正则表达式正则表达式(或称为常规表示法)是透过一些特殊字符的排列,用以搜寻/取代/删除一列或多列文字字符串,简单的说,正规表示法就是用在字符串的处理上面的一项『表示式』。正则表达式并不是一个工具程序,而是一个字符串处理的标准依据,如果您想要以正则表达式的方式处理字符串,就得要使用支持正规表示法的工具程序才行,这类的工具程序很多,例如vi,sed,awk等等。简单的说,正则表达式就是处理字符串的方法,他是以行为单位,来进行字符串的处理行为,他透过一些特殊符号的辅助,可以让使用者轻易的达到搜寻/替换某特定字符串的处
2、理程序!正则表达式基本上是一种『表示法』,只要工具程序支持这种表示法,那么该工具程序就可以用来作为正规表示法的字符串处理之用。也就是说,例如vi,grep,awk,sed等等工具,因为她们有支持正规表示法,所以,这些工具就可以使用正规表示法的特殊字符来进行字符串的处理。正则表达式的广泛用途方便管理员管理主机处理垃圾、广告邮件处理文本通过grep选取字符串grep[-acinv]'搜寻字符串'filename参数说明:-a:将binary档案以text档案的方式搜寻数据-c:计算找到'搜寻字符串'的次数-i:忽略大小写的不同,所以大小写视为相
3、同-n:顺便输出行号-v:反向选择,亦即显示出没有'搜寻字符串'内容的那一行!grep'root'/etc/passwdgrep-v'root'/etc/passwdlast
4、grep'root'"OpenSource"isagoodmechanismtodevelopprograms.appleismyfavoritefood.Footballgameisnotusefeetonly.thisdressdoesn'tfitme.However,thisdressisabout$3183dollars.GNUisfreeairnotfree
5、beer.Herhairisverybeauty.Ican'tfinishthetest.Oh!Thesouptastegood.motorcycleischeapthancar.Thiswindowisclear.thesymbol'*'isrepresentedasstart.Oh!Mygod!Thegdsoftwareisalibraryfordraftingprograms.Youarethebestismeanyouaretheno.1.Theworldisthesamewith"glad".Ilikedog.goo
6、gleisthebesttoolsforsearchkeyword.goooooogleyes!go!go!Let'sgo.#IamVBird从文件当中取得the这个特定字符串那如果想要『反向选择』呢?也就是说,当该行没有'the'这个字符串时,才显示在屏幕上取得不论大小写的the这个字符串如果我想要搜寻test或taste这两个单词如果想要搜寻到有oo的字符如果我不想要oo前面有g的话呢?假设我oo前面不想要有小写字符我们要取得有数字的那一行行首与行尾字符^$如果我想要让the只在行首列出呢?这个时候就得要使用定位字符了!如果我想要开头是
7、小写字符的那一行就列出呢?如果我不想要开头是英文字母注意到了吧?那个^符号,在字符集合符号(括号[])之内与之外是不同的!在[]内代表『反向选择』,在[]之外则代表定位在行首的意义!要分清楚喔!那如果我想要找出来,行尾结束为小数点(.)的那一行,该如何处理?如果我想要找出来,哪一行是『空白行』,也就是说,该行并没有输入任何数据,该如何搜寻??任意一个字符.与重复字符*在bash的章节当中,我们知道通配符*可以用来代表任意(0或多个)字符,但是正则表达式并不是通配符,两者之间是不相同的!至于正则表达式当中的『.』则代表『绝对有一个任意字符』的
8、意思!grep-n'g..d'regular_express.txtgrep-n'o*'regular_express.txt*代表的是『重复0个或多个前面的RE字符』的意义,因此,『o*』代表的是:『拥有空字符或一个o以上的字符』,特别注意,因为允许空字符(就是有没有字符都可以的意思)任意一个字符.与重复字符*当我们需要『至少两个o以上的字符串』时,就需要ooo*如果我想要字符串开头与结尾都是g,但是两个g之间仅能存在至少一个o,亦即是gog,goog,gooog....等等,那该如何?如果我想要找出g开头与g结尾的字符串,当中的字符可有
9、可无,那该如何是好?是『g*g』吗?如果我想要找出『任意数字』的行列呢?限定连续RE字符范围{}我想要找出两个到五个o的连续字符串,该如何作?假设我们要找出g后面接2到5个o,然
此文档下载收益归作者所有