UNIX下的正则表达式

上传人:野鹰 文档编号:3188016 上传时间:2017-07-31 格式:PDF 页数:9 大小:182.44KB
返回 下载 相关 举报
UNIX下的正则表达式_第1页
第1页 / 共9页
UNIX下的正则表达式_第2页
第2页 / 共9页
UNIX下的正则表达式_第3页
第3页 / 共9页
UNIX下的正则表达式_第4页
第4页 / 共9页
UNIX下的正则表达式_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《UNIX下的正则表达式》由会员分享,可在线阅读,更多相关《UNIX下的正则表达式(9页珍藏版)》请在金锄头文库上搜索。

1、UNIX下的正则表达式(Regular Expression)(初2002年3月12日,最后修改:2002年3月26日 ,修改次数:21蓝飞鸟)让我们来看一个命令,用ls命令列出目录:ls -l |grep d 初学Linux的朋友,明白ls和DOS的DIR是意思相差不多,但是如果没弄明白RegularExpression,就只会觉得UNIX下的命令太复杂,而不会享受到UNIX的命令的强大。象这个命令:ls -l |grep d 就运用了|(管道)、grep(搜索)和正则表达式,而要看懂这个命令,关键的还在正则表达式。正则表达式就是regular expression,从英文翻译过来常有多种译

2、法,因此regular expression还有别的叫法,如规则表达式、文字匹配模式,一般来说是在使用grep搜索,sed和awk语言时列出或者匹配字符串的一种办法。值 得注意的正则表达式看起来颇象一些命令的文件名匹配模式,如find,实际 ,正则表达式 文件名匹配模式不 。在UNIX ,正则表达式是 一个或多个 字符和meta字符 的字符串, 正则表达式 数 匹配 ,规 的模式, 后一个字符一个字符的 。 我 了一下 ,目 regular expression有 种式,一种是的(POSIX 1003.2叫这种 的regular expression),一种是的(currency1regula

3、r expression)式,我这“的fi式,如egrep的regular expression(fl下 RE),因 fl 的currency1RE只在些 后 。UNIX有多”会用到正则表达式,在大文件 符件的字符串或SHELL ,要 的法UNIX,得运用RE不,不 RE,在UNIX , , 觉得 不” , , 时 。,currency1来一 命令 后 就 的 ,得 在 了命令 果 出, 数 ,还得 , 。如果弄明白了RE, 多时 就得心应 。在我fl 的学习过 ,随fiLinux系统的悉,我发学习UNIX第一步就是要弄 RE,这样,更易看懂复杂的命令 。正则表达式的具 应用,要 实际情况,但

4、首先得懂几个RE的currency1观念。RE fl下几个currency1部分 : 字符集,指匹配一个或多个指 的字符。字符集fl指 范围或一一列出所有指 的字符。 位标识符,指明在一 的 首或是 尾。 匹配次数。一般指某个字符连续重复出多次。 meta字符。必须 meta字符才实。 总的来说,meta字符是关键,明白了meta字符的含义,就易 字符集、 位标识符fl及匹配次数,通常有fl下meta字符,在列出meta字符 ,先约 几个术语(借用POSIX 的说明文档)。每个RE 一个或多个 分支 构 ,每个分支 |符号分隔。如在file 匹配字符串string1或string2的 :egr

5、ep string1|string2 file 每个分支 一个或多个 块 连 而 ,依次匹配每一个块。每一个块 一个 原子 后面跟*、+、-、?符号或者(表示范围) ,原子fl是用()括号包围起来的RE。 使用 ,通常要 RE用(引号)引起来,否则,和()必须加(转义符) ,即原子,(原子)。值得注意的是,grep和egrep( grep)存在诸多不 ,其 有一点就是,在egrep 的、()、| 符号,只要在(引号) ,不加(斜杠),而grep 的这些符号,在(引号) 也必须加(斜杠),如egrep string1|string2用grep表示就是 grep string1|string2$

6、从 尾 始匹配 从 首 始匹配. 匹配任一字符,当 ,除了换 符匹配内列出的字符,如果内fl符号 始,则表明匹配内列出的所有字符fl外的字符,如果要匹配一个符号,则符号必须在的 始(在后面),如果要匹配一个-(减号),-最好放在首位或末位。注意:在内的meta字符,没有特殊含义。内的字符fl一一列出或指 范围。fi一一列出的字符集,fl用“,”(逗号)隔 fl 阅读,但并不强制要求如此。如要表示所有数字0123456789也fl用0-9表示 如果要表示所有字母a-zA-Z 如仅仅表示所有小写字母a-z当我要一个单词,这个单词包括4个字母,flb 头,fld 尾,因 这是个单词,所有b和d 必须

7、是字母,当 论大小写 。用模式表示就是:ba-zA-Za-zA-Zdfl是bird、band或者是bind。 原子n1,n2匹配原子出次数,如果只有n1则表明精确出n1次,如果是n1,(n1加逗号)则表明出至少n1次,如果是n1,n2则表示出最少n1次,最多n2次,即在n1和n2 。注意:n1 使用 放在原子的后面,表示该原子的后面部分是 单词,如and匹配and、hand而不会匹配android,如果要表示一个整的单词, 转义符,用来表示特殊符号,即让meta字符失 他们的特殊含义:.$()|*+?, 搜索这些字符。让我们用例子来说明:我有一个文件叫myfile,先看看 的内: flaunt

8、yy example$ cat myfile blueflybird is me.BLUEFLYBIRD IS ME.Yes,Im blueflybird.of course,Blueflybird is me.Of Course,BLUEFLYBIRD IS ME.BLUEBLUE BLUE by BLUE blue bird bird 分支、块、原子flauntyy example$ egrep blueflybird|BLUEFLYBIRD.*E.$ myfile blueflybird is me.BLUEFLYBIRD IS ME.Of Course,BLUEFLYBIRD IS M

9、E.面的命令包括 个分支,用|分 ,意思是 myfile文件 ,fl小写blueflybird 头的 ,或者是含有大写BLUEFLYBIRD单词并且flE. 尾的 。匹配 末$如果要 myfile文件 fle. 尾的 (注意加了转义符): flauntyy example$ egrep e.$ myfile blueflybird is me.of course,Blueflybird is me.或者匹配flbird. 尾的 (注意$号放在命令后面):flauntyy example$ egrep bird.$ myfile Yes,Im blueflybird.匹配 首如果要 myfile

10、文件 fl小写b 头的 : flauntyy example$ egrep b myfile blueflybird is me.如 fl小写b或者大写B 始的 : flauntyy example$ egrep bB myfile blueflybird is me.BLUEFLYBIRD IS ME.匹配任一字符.通常 其他meta字符联使用,因 .表任一字符,如下面的命令表示 fl任一字符 头,第二个字符是 f 的 flauntyy example$ egrep .f myfile of course,Blueflybird is me.Of Course,BLUEFLYBIRD IS

11、ME.匹配内列出的字符包括有小写o 大写O的 flauntyy example$ egrep oOf myfile of course,Blueflybird is me.Of Course,BLUEFLYBIRD IS ME.不包括小写o 大写O的 flauntyy example$ egrep oOf myfile blueflybird is me.Yes,Im blueflybird.of course,Blueflybird is me.包括符号和大写Y的 flauntyy example$ egrep Y myfile BLUEFLYBIRD IS ME.Yes,Im bluefl

12、ybird.Of Course,BLUEFLYBIRD IS ME.BLUEBLUE BLUE by BLUE blue bird bird 所有fl大写字母 始的 flauntyy example$ egrep A-Z myfile BLUEFLYBIRD IS ME.Yes,Im blueflybird.Of Course,BLUEFLYBIRD IS ME. 这的整单词并不是说真实的英语单词,而是指连续的字母 不含有数字、空格、换 符及制表符,如myfile1 整单词是myfile样my name1eye ,my、name、eye各 是整单词,而bbeekks 的 也是整单词(原子) 这

13、要提一下sed命令,sed是一种流 辑器,还是用例子来说明,下面的命令 myfile 的大写BLUEFLYBIRD替换 -flauntyy example$ sed s/BLUEFLYBIRD/-/ myfile blueflybird is me.- IS ME.Yes,Im blueflybird.of course,Blueflybird is me.Of Course,- IS ME.BLUEBLUE BLUE by BLUE blue bird bird 如果我们要在myfile 大写BLUEFLYBIRD后面加 -就要用到(原子)的引用。即 面“的在后面跟小10的数字依次引用fla

14、untyy example$ sed s/(BLUEFLYBIRD)/1-/ myfile blueflybird is me.BLUEFLYBIRD- IS ME.Yes,Im blueflybird.of course,Blueflybird is me.Of Course,BLUEFLYBIRD- IS ME.BLUEBLUE BLUE by BLUE blue bird bird 面的命令 ,(BLUEFLYBIRD)增加了转义符(BLUEFLYBIRD),注意使用了1来引用BLUEFLYBIRD匹配次数、+、?、* 了继续说明匹配次数、+、?、*,我们 一个文件叫myfile1,内如

15、下:flauntyy example$ cat myfile1 blueblueblueblueblueblueBLUEBLUEBLUEBLUEBLUEBBLLUUEEBLUEEE如果我要 个(精确的 个)连续BLUE相连的 flauntyy example$ egrep (BLUE)2 myfile1 BLUEBLUEBLUEBLUEBLUEBLUE注意: 了 BLUEBLUE,用RE表示则是(BLUE)2,而不是BLUE2,如果是BLUE2,则表示BLUEE。: 说我们currency1来要 BLUEBLUE, 面还列出了 个连续的BLUE 因 BLUEBLUEBLUE包括了BLUEBLUE。如果 BLUEBLUE一 ,则必须使

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号