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

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

ID:41085045

大小:55.00 KB

页数:4页

时间:2019-08-16

III Linux系统编程_ 32正则表达式_2 基本语法_第1页
III Linux系统编程_ 32正则表达式_2 基本语法_第2页
III Linux系统编程_ 32正则表达式_2 基本语法_第3页
III Linux系统编程_ 32正则表达式_2 基本语法_第4页
资源描述:

《III Linux系统编程_ 32正则表达式_2 基本语法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

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

2、ep命令做实验。表 32.1. 字符类字符含义举例.匹配任意一个字符abc.可以匹配abcd、abc9等[]匹配括号中的任意一个字符[abc]d可以匹配ad、bd或cd-在[]括号内表示字符范围[0-9a-fA-F]可以匹配一位十六进制数字^位于[]括号内的开头,匹配除括号中的字符之外的任意一个字符[^xy]匹配除xy之外的任一字符,因此[^xy]1可以匹配a1、b1但不匹配x1、y1[[:xxx:]]grep工具预定义的一些命名字符类[[:alpha:]]匹配一个字母,[[:digit:]]匹配一个数字表 32.2. 数量限定符字符含义举例?紧跟在

3、它前面的单元应匹配零次或一次[0-9]?.[0-9]匹配0.0、2.3、.5等,由于.在正则表达式中是一个特殊字符,所以需要用转义一下,取字面值+紧跟在它前面的单元应匹配一次或多次[a-zA-Z0-9_.-]+@[a-zA-Z0-9_.-]+.[a-zA-Z0-9_.-]+匹配email地址*[0-9][0-9]*匹配至少一位数字,等价于[0-9]+,紧跟在它前面的单元应匹配零次或多次[a-zA-Z_]+[a-zA-Z_0-9]*匹配C语言的标识符{N}紧跟在它前面的单元应精确匹配N次[1-9][0-9]{2}匹配从100到999的整数{N,}

4、紧跟在它前面的单元应匹配至少N次[1-9][0-9]{2,}匹配三位以上(含三位)的整数{,M}紧跟在它前面的单元应匹配最多M次[0-9]{,1}相当于[0-9]?{N,M}紧跟在它前面的单元应匹配至少N次,最多M次[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}匹配IP地址再次注意grep找的是包含某一模式的行,而不是完全匹配某一模式的行。再举个例子,如果文本文件的内容是aaabcaadefg查找a*这个模式的结果是三行都被找出来了$egrep'a*'testfileaabcaadefga*匹配0个或多个

5、a,而第三行包含0个a,所以也包含了这一模式。单独用a*这样的正则表达式做查找没什么意义,一般是把a*作为正则表达式的一部分来用。表 32.3. 位置限定符字符含义举例^匹配行首的位置^Content匹配位于一行开头的Content$匹配行末的位置;$匹配位于一行结尾的;号,^$匹配空行<匹配单词开头的位置匹配单词结尾的位置p>匹配leap...,但不匹配parent、sleepyb匹配单词开头或结尾的位置batb匹配...at...,但不匹配cat、atexit、batc

6、hB匹配非单词开头和结尾的位置BatB匹配battery,但不匹配...attend、hat...位置限定符可以帮助grep更准确地查找,例如上一节我们用[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}查找IP地址,找到这两行192.168.1.11234.234.04.5678如果用^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$查找,就可以把1234.234.04.5678这一行过滤掉了。表 32.4. 其它特殊字符字符含义举例转义字符,普通字符转

7、义为特殊字符,特殊字符转义为普通字符普通字符<写成<表示单词开头的位置,特殊字符.写成.以及写成\就当作普通字符来匹配()将正则表达式的一部分括起来组成一个单元,可以对整个单元使用数量限定符([0-9]{1,3}.){3}[0-9]{1,3}匹配IP地址

8、连接两个子表达式,表示或的关系n(o

9、either)匹配no或neither以上介绍的是grep正则表达式的Extended规范,Basic规范也有这些语法,只是字符?+{}

10、()应解释为普通字符,要表示上述特殊含义则需要加转义。如果用grep而不是egrep,并且不加-E参数,则应该遵

11、照Basic规范来写正则表达式。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。