- 1、本文档共20页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
补充正则表达式完整稿
第3章 正则表达式
由于很多Linux Shell编程的工具和命令普遍使用到了正则表达式,如grep、sed和awk等,因此,不理解正则表达式就无法理解和熟练地使用Shell编程的工具和命令。为此,本章首先深入介绍正在表达式的基础知识,详细讨论基本正则表达式和扩展正则表达式中元字符的意义和用法。然后,介绍Shell在有哪些信誉好的足球投注网站匹配文件时经常使用的机制——通配,通配所用到的元字符与正则表达式存在细微差别,本章结合例子逐个讨论通配的元字符。最后,介绍Linux系统中使用广泛的grep命令,着重讨论grep命令的基本用法,及如何与正则表达式相结合,以便更加灵活地进行文本有哪些信誉好的足球投注网站,此外,还将简单介绍grep命令族中的其他两个命令egrep和fgrep。
3.1 正则表达式基础
Linux Shell以一串字符作为表达式向系统传达意思。元字符(Metacharacters)是用来阐释字符表达式意义的字符,简言之,元字符就是描述字符的字符,它用于对字符表达式的内容、转换及各种操作信息进行描述。正则表达式是由一串字符和元字符构成的字符串,简称RE(Regular Expression)。正则表达式的主要功能是文本查询和字符串操作,它可以匹配文本的一个字符或字符集合。
在Linux系统中,程序设计语言Java、Perl和Python等,Shell工具sed、awk和grep等,MySQL和PostgreSQL等数据库服务器都使用了正则表达式,图3-1描述了正则表达式用于数据流处理的过程,实际上,正则表达式完成了数据过滤,将不满足正则表达式定义的数据拒绝掉,剩下与正则表达式匹配的数据。
图3-1 正则表达式处理数据过程
正则表达式的基本元素包括普通字符和元字符,例如,a、b、1、2等字符属于普通字符,普通字符可以按照字面意思理解,如:a只能理解为英文的小写字母a,没有其他隐藏含义。而*、^、[]等元字符,Shell赋予了它们超越字面意思的意义,如:*符号的字面意义只是一个符号,而实际上却表示了重复前面的字符0次或多次的隐藏含义。因此,掌握正则表达式基本元素主要是对正则表达式中元字符意义的掌握。
POSIX标准将正则表达式分为两类:基本的正则表达式和扩展的正则表达式,大部分Linux应用和工具仅支持基本的正则表达式,因而,本节所述的正则表达式基础是掌握正则表达式的关键,表3-1列出了基本的正则表达式中元字符集合及其意义。
表3-1 基本的正则表达式元字符集合及其意义
符 号 意 义 * 0个或多个在*字符之前的那个普通字符 . 匹配任意字符 ^ 匹配行首,或后面字符的非 $ 匹配行尾 [] 匹配字符集合 \ 转义符,屏蔽一个元字符的特殊意义 \\ 精确匹配符号 \{n\} 匹配前面字符出现n次 \{n,\} 匹配前面字符至少出现n次 \{n,m\} 匹配前面字符出现n~m次
下面逐个介绍正则表达式元字符的意义和用法,并举一些例子结合使用元字符集合。
1. “*”符号
“*”符号用于匹配前面一个普通字符的0次或多次重复,如:
“*”符号前面的普通字符是1,*字符就表示匹配1字符0次或多次,如字符串helo、hello、hellllllo都可以由hel*o来表示。
2. “.”符号
点号“.”用于匹配任意一个字符,如:
由于“.”符号只能匹配一个字符,因此,上述字符串表示前面三个字符为任意字符,第4和第5个字符是7和3,最后一个字符为任意字符,如xcb738、4J973U都能匹配上述字符串。值得注意的是,“.”符号可以匹配一个空格,因此,x b738,ui 73e也能匹配上述字符串。
3. “^”符号
“^”符号用于匹配行首,表示行首的字符是“^”字符后面的那个字符,如:
这表示匹配以cloud开头的行。结合上面介绍的“*”符号和“.”符号,再举一个例子:
该字符串表示行首的三个字符为任意字符(可以是空格),第4~6个字符为X86,第7个字符开始可以重复匹配6,如:866X86666、8 6X86都可以匹配上述字符串。
4. “$”符号
“$”符号匹配行尾,“$”符号放在匹配字符之后,与“^”符号的功能和用法都相反。如:
该正则表达式表示匹配以micky结尾的所有行。一个特殊的正则表达式是匹配所有空行的表达式,为:
该正则表达式既匹配行首,又匹配行尾,中间没有任何字符,因此,为空行。读者需要牢记例3-6所示的空行表示方法,很多命令都用到这个正则表达式来表示空行。
如果需要匹配只包含一个字符的行,如下面的例3-7所示:
5. “[]”符号
方括号“[]”匹配字符集合,该符号支持穷举方法列出字符集合的所有元素,也支持使用“-”符号表示字符集合范围,表明字符集合范围从“-”左边字符开始,到“-”右边字符结束。如果要匹配任意一个数字
文档评论(0)