资源预览内容
第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
第9页 / 共9页
亲,该文档总共9页全部预览完了,如果喜欢就下载吧!
资源描述
ID 正则表达式用法及介绍复制链接本帖最后由 漫步云中 于 2011-2-18 11:23 编辑ID 正则表达式用处很广,正则表达比较复杂的东西,只有不断用到,摸索,就能得心应手!例 1:如果要把蓝色数据要替换成这右边的,有什么比较快捷的方法吗, 也就是把左边蓝色底文字的数字全都替换成右边的,就用到正则表达式:用查找替换。 选中整列后 用 Grep 查找 .+ 替换为 ,见下图 : 例 2如果把下面对话的人名统一修改格式,英文的加蓝加粗。中文的加蓝变粗宋。因为整本书有几百个不一样的人名,如果用替换的话也是一个大工程,用 GREP 可以做到:(也可以用嵌套样式)GREP 代码查找参考如下:代码:.+?(:|: ) 替换如图:1. grep 简介egrep 和 fgrep 的命令只跟 grep 有很小不同。egrep 是 grep 的扩展,支持更多的 re 元字符, fgrep 就是 fixed grep 或 fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux 使用 GNU 版本的 grep。它功能更强,可以通过-G 、-E、-F 命令行选项来使用 egrep 和 fgrep 的功能。 grep 的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容。 grep 可用于 shell 脚本,因为 grep 通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回 0,如果搜索不成功,则返回 1,如果搜索的文件不存在,则返回 2。我们利用这些返回值就可进行一些自动化的文本处理工作。 2. grep 正则表达式元字符集(基本集) 锚定行的开始 如:grep匹配所有以 grep 开头的行。 $ 锚定行的结束 如:grep$匹配所有以 grep 结尾的行。 . 匹配一个非换行符的字符 如:gr.p匹配 gr 后接一个任意字符,然后是 p。 * 匹配零个或多个先前字符 如:*grep匹配所有一个或多个空格后紧跟 grep 的行。 .*一起用代表任意字符。 匹配一个指定范围内的字符,如Ggrep匹配 Grep 和 grep。 匹配一个不在指定范围内的字符,如:A-FH-Zrep 匹配不包含 A-F 和 H-Z 的一个字母开头,紧跟 rep 的行。 (.) 标记匹配字符,如(love) ,love 被标记为 1。 锚定单词的结束,如grep 匹配包含以 grep 结尾的单词的行。 xm 重复字符 x,m 次,如: o5匹配包含 5 个 o 的行。 xm, 重复字符 x,至少 m 次,如:o5,匹配至少有 5 个 o 的行。 xm,n 重复字符 x,至少 m 次,不多于 n 次,如:o5,10匹配 5-10 个 o 的行。 w 匹配文字和数字字符,也就是A-Za-z0-9 ,如:Gw*p匹配以 G 后跟零个或多个文字或数字字符,然后是 p。 W w 的反置形式,匹配一个或多个非单词字符,如点号句号等。 b 单词锁定符,如: bgrepb只匹配 grep。 3. 用于 egrep 和 grep -E 的元字符扩展集+ 匹配一个或多个先前的字符。如:a-z+able,匹配一个或多个小写字母后跟 able 的串,如loveable,enable,disable 等。? 匹配零个或多个先前的字符。如:gr?p匹配 gr 后跟一个或没有字符,然后是 p 的行。 a|b|c 匹配 a 或 b 或 c。如:grep|sed 匹配 grep 或 sed () 分组符号,如:love(able|rs)ov+匹配 loveable 或 lovers,匹配一个或多个 ov。 x,xm,xm,n 作用同 xm,xm,xm,n 4. POSIX 字符类为了在不同国家的字符编码中保持一至,POSIX(The Portable Operating System Interface)增加了特殊的字符类,如:alnum:是 A-Za-z0-9 的另一个写法。要把它们放到号内才能成为正则表达式,如A- Za-z0-9或:alnum:。在linux 下的 grep 除 fgrep 外,都支持 POSIX 的字符类。 :alnum: 文字数字字符 :alpha: 文字字符 :digit: 数字字符 :graph: 非空字符(非空格、控制字符) :lower: 小写字符 :cntrl: 控制字符 :print: 非空字符(包括空格) :punct: 标点符号 :space: 所有空白字符(新行,空格,制表符) :upper: 大写字符 :xdigit: 十六进制数字(0-9,a-f,A-F) 5. Grep 命令选项-? 同时显示匹配行上下的?行,如:grep -2 pattern filename 同时显示匹配行的上下 2 行。 -b,-byte-offset 打印匹配行前面打印该行所在的块号码。 -c,-count 只打印匹配的行数,不显示匹配的内容。 -f File,-file=File 从文件中提取模板。空文件中包含 0 个模板,所以什么都不匹配。 -h,-no-filename 当搜索多个文件时,不显示匹配文件名前缀。 -i, -ignore-case 忽略大小写差别。 -q,-quiet 取消显示,只返回退出状态。0 则表示找到了匹配的行。 -l, -files-with-matches 打印匹配模板的文件清单。 -L,-files-without-match 打印不匹配模板的文件清单。 -n,-line-number 在匹配的行前面打印行号。 -s,-silent 不显示关于不存在或者无法读取文件的错误信息。 -v,-revert-match 反检索,只显示不匹配的行。 -w,-word-regexp 如果被引用,就把表达式做为一个单词搜索。 -V ,-version 显示软件版本信息。 6. 实例要用好 grep 这个工具,其实就是要写好正则表达式,所以这里不对 grep 的所有功能进行实例讲解,只列几个例子,讲解一个正则表达式的写法。 $ ls -l | grep a 通过管道过滤 ls -l 输出的内容,只显示以 a 开头的行。 $ grep test d* 显示所有以 d 开头的文件中包含 test 的行。 $ grep test aa bb cc 显示在 aa,bb ,cc 文件中匹配 test 的行。 $ grep a-z5 aa 显示所有包含每个字符串至少有 5 个连续小写字符的字符串的行。 $ grep w(es)t.*1 aa 如果 west 被匹配,则 es 就被存储到内存中,并标记为 1,然后搜索任意个字符(.*),这些字符后面紧跟着另外一个 es(1),找到就显示该行。如果用 egrep 或 grep -E,就不用 号进行转义,直接写成w(es)t.*1就可以了。 7.注意在某些机器上,要使用-E 参数才能够进行逻辑匹配(详见下) grep a|b (匹配包含字符样式为a|b的行) grep -E a|b (匹配包含字符样式为a或b的行) man grep 里面关于-E 参数的说明是 -E Treats each pattern specified as an extended regular expression (ERE). A NULL value for the ERE matches every line. Note: The grep command with the -E flag is the same as the egrep command, except that error and usage messages are different and the -s flag functions differently
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号