III Linux系统编程_ 32正则表达式_2 基本语法

上传人:桔**** 文档编号:474706947 上传时间:2023-11-15 格式:DOC 页数:4 大小:55KB
返回 下载 相关 举报
III Linux系统编程_ 32正则表达式_2 基本语法_第1页
第1页 / 共4页
III Linux系统编程_ 32正则表达式_2 基本语法_第2页
第2页 / 共4页
III Linux系统编程_ 32正则表达式_2 基本语法_第3页
第3页 / 共4页
III Linux系统编程_ 32正则表达式_2 基本语法_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《III Linux系统编程_ 32正则表达式_2 基本语法》由会员分享,可在线阅读,更多相关《III Linux系统编程_ 32正则表达式_2 基本语法(4页珍藏版)》请在金锄头文库上搜索。

1、第32章正则表达式2.基本语法我们知道C的变量和Shell脚本变量的定义和使用方法很不相同,表达能力也不相同,C的变量有各种类型,而Shell脚本变量都是字符串。同样道理,各种工具和编程语言所使用的正则表达式规范的语法并不相同,表达能力也各不相同,有的正则表达式规范引入很多扩展,能表达更复杂的模式,但各种正则表达式规范的基本概念都是相通的。本节介绍egrep(1)所使用的正则表达式,它大致上符合POSIX正则表达式规范,详见regex(7)(看这个man page对你的英文绝对是很好的锻炼)。希望读者仿照上一节的例子,一边学习语法,一边用egrep命令做实验。表32.1.字符类字符含义举例.匹

2、配任意一个字符abc.可以匹配abcd、abc9等匹配括号中的任意一个字符abcd可以匹配ad、bd或cd-在括号内表示字符范围0-9a-fA-F可以匹配一位十六进制数字位于括号内的开头,匹配除括号中的字符之外的任意一个字符xy匹配除xy之外的任一字符,因此xy1可以匹配a1、b1但不匹配x1、y1:xxx:grep工具预定义的一些命名字符类:alpha:匹配一个字母,:digit:匹配一个数字表32.2.数量限定符字符含义举例?紧跟在它前面的单元应匹配零次或一次0-9?.0-9匹配0.0、2.3、.5等,由于.在正则表达式中是一个特殊字符,所以需要用转义一下,取字面值+紧跟在它前面的单元应匹

3、配一次或多次a-zA-Z0-9_.-+a-zA-Z0-9_.-+.a-zA-Z0-9_.-+匹配email地址*紧跟在它前面的单元应匹配零次或多次0-90-9*匹配至少一位数字,等价于0-9+,a-zA-Z_+a-zA-Z_0-9*匹配C语言的标识符N紧跟在它前面的单元应精确匹配N次1-90-92匹配从100到999的整数N,紧跟在它前面的单元应匹配至少N次1-90-92,匹配三位以上(含三位)的整数,M紧跟在它前面的单元应匹配最多M次0-9,1相当于0-9?N,M紧跟在它前面的单元应匹配至少N次,最多M次0-91,3.0-91,3.0-91,3.0-91,3匹配IP地址再次注意grep找的是

4、包含某一模式的行,而不是完全匹配某一模式的行。再举个例子,如果文本文件的内容是aaabcaadefg查找a*这个模式的结果是三行都被找出来了$ egrep a* testfile aabcaadefga*匹配0个或多个a,而第三行包含0个a,所以也包含了这一模式。单独用a*这样的正则表达式做查找没什么意义,一般是把a*作为正则表达式的一部分来用。表32.3.位置限定符字符含义举例匹配行首的位置Content匹配位于一行开头的Content$匹配行末的位置;$匹配位于一行结尾的;号,$匹配空行匹配单词开头的位置匹配单词结尾的位置p匹配leap .,但不匹配parent、sleepyb匹配单词开头

5、或结尾的位置batb匹配. at .,但不匹配cat、atexit、batchB匹配非单词开头和结尾的位置BatB匹配battery,但不匹配. attend、hat .位置限定符可以帮助grep更准确地查找,例如上一节我们用0-91,3.0-91,3.0-91,3.0-91,3查找IP地址,找到这两行192.168.1.11234.234.04.5678如果用0-91,3.0-91,3.0-91,3.0-91,3$查找,就可以把1234.234.04.5678这一行过滤掉了。表32.4.其它特殊字符字符含义举例转义字符,普通字符转义为特殊字符,特殊字符转义为普通字符普通字符写成表示单词开头的位置,特殊字符.写成.以及写成就当作普通字符来匹配()将正则表达式的一部分括起来组成一个单元,可以对整个单元使用数量限定符(0-91,3.)30-91,3匹配IP地址|连接两个子表达式,表示或的关系n(o|either)匹配no或neither以上介绍的是grep正则表达式的Extended规范,Basic规范也有这些语法,只是字符?+|()应解释为普通字符,要表示上述特殊含义则需要加转义。如果用grep而不是egrep,并且不加-E参数,则应该遵照Basic规范来写正则表达式。

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

当前位置:首页 > 机械/制造/汽车 > 工业自动化

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