正则表达式 必知必会

上传人:小** 文档编号:88606124 上传时间:2019-05-05 格式:PDF 页数:30 大小:542.49KB
返回 下载 相关 举报
正则表达式 必知必会_第1页
第1页 / 共30页
正则表达式 必知必会_第2页
第2页 / 共30页
正则表达式 必知必会_第3页
第3页 / 共30页
正则表达式 必知必会_第4页
第4页 / 共30页
正则表达式 必知必会_第5页
第5页 / 共30页
点击查看更多>>
资源描述

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

1、正则表达式 必知必会 正则 正则表达式 必知必会 简介 定义 分类 Linux常用文本工具 grep, egrep sed Awk(gawk) 匹配单个字符 匹配纯文本 匹配任意字符 匹配一组字符 匹配多个字符中的某一个 使用字符区间 取非匹配 小结 使用元字符 对特殊字符进行转义 匹配空白字符 匹配特定的字符类别 匹配数字(非数字) 匹配字母和数字(非字母和数字) 匹配空白字符(非空白字符) 小结 重复匹配 有多少个匹配 匹配一个或多个字符 匹配零个或多个字符 匹配零个或一个字符 匹配的重复次数 为重复匹配次数设定一个区间 匹配“至少重复多少次” 防止过度匹配 小结 位置匹配 边界 单词边界

2、 字符串边界 小结 使用子表达式 什么是子表达式 子表达式的嵌套 小结 回溯引用:前后一致匹配 回溯引用有什么用 回溯引用匹配 回溯引用在替换操作中的应用 大小写转换 小结 前后查找 前后查找 向前查找 向后查找 把向前查找和向后查找结合起来 对前后查找取非 小结 END 简介 推荐阅读:Jeffrey Friedl 精通正则表达式(第3版),本文是该书的读书笔记。 定义 正则表达式:regular expression, regex,是用来描述或者匹配一系列符合某个句法规则的字 符串的单个字符串。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及 开的。 分类 BRE

3、s, 基本的正则表达式(Basic Regular Expression) EREs, 扩展的正则表达式(Extended Regular Expression) PREs, Perl 的正则表达式(Perl Regular Expression) Linux常用文本工具 只有掌握了正则表达式,才能全面地掌握 Linux 下的常用文本工具(例如:grep、egrep、 GUN sed、 Awk 等)的用法。 grep, egrep 1. 1)grep 支持:BREs、EREs、PREs 正则表达式 2. 3. - grep 指令后不跟任何参数,则表示要使用 ”BREs“ 4. - grep 指

4、令后跟 ”-E“ 参数,则表示要使用 “EREs“ 5. - grep 指令后跟 “-P“ 参数,则表示要使用 “PREs“ 6. 7. 2)egrep 支持:EREs、PREs 正则表达式 8. 9. - egrep 指令后不跟任何参数,则表示要使用 “EREs” 10. - egrep 指令后跟 “-P“ 参数,则表示要使用 “PREs“ 11. 12. 3)grep 与 egrep 正则匹配文件,处理文件方法 13. 14. a. grep 与 egrep 的处理对象:文本文件 15. b. grep 与 egrep 的处理过程:查找文本文件中是否含要查找的 “关键字”(关键字可 以是正

5、则表达式) ,如果含有要查找的 ”关健字“,那么默认返回该文本文件中包含该”关健字 “的该行的内容,并在标准输出中显示出来,除非使用了“ 重定向符号, 16. c. grep 与 egrep 在处理文本文件时,是按行处理的 sed 1. 1)sed 文本工具支持:BREs、EREs 2. 3. - sed 指令默认是使用“BREs“ 4. - sed 命令参数 “-r ” ,则表示要使用“EREs“ 5. 6. 2)sed 功能与作用 7. 8. a. sed 处理的对象:文本文件 9. b. sed 处理操作:对文本文件的内容进行 - 查找、替换、删除、增加等操作 10. c. sed 在处

6、理文本文件的时候,也是按行处理的 Awk(gawk) 1. 1)Awk 文本工具支持:EREs 2. 3. - awk 指令默认是使用 “EREs“ 4. 5. 2)Awk 文本工具处理文本的特点 6. 7. a. awk 处理的对象:文本文件 8. b. awk 处理操作:主要是对列进行操作 匹配单个字符 Ben是一个正则表达式。正则表达式可以包含纯文本(甚至可以只包含纯文本)。 匹配纯文本 文本 1. Hello, my name is Ben. Please visit my website at http:/ . 正则表达式 1. Ben 结果 匹配任意字符 .字符可以匹配任何一个单个

7、的字符。 文本 1. sales1.xls 2. sales2.xls 3. sales3.xls 4. na1.xls 5. na2.xls 6. orders3.xls 7. apac1.xls 8. europe2.xls 正则表达式 1. sales. 结果 匹配一组字符 匹配多个字符中的某一个 1. sales1.xls 2. sales2.xls 3. sales3.xls 4. na1.xls 5. na2.xls 6. sa1.xls 7. ca1.xls 8. orders3.xls 9. apac1.xls 10. europe2.xls 正则表达式 1. nsa.xls

8、结果 使用字符区间 在使用正则表达式的时候,会频繁地用到一些字符区间(0-9、A-Z)。为了简化字符区间的 定义,正则表达式提供一个特殊的元字符:-作为连字符。 正则表达式 1. nsa0-9.xls 结果 匹配任何一个字母(无论大小写)或数字 1. A-Za-z0-9 取非匹配 字符集合通常用来指定一组必须匹配其中之一的字符。但是在某些场合下,我们需要反过来 做,给出一组不需要得到的字符。换句话说:除了那个字符集合里的字符,其他字符都可以匹配, 使用字符。 正则表达式 1. nsa0-9.xls 结果:上述输入没有结果,因为没有匹配字符串。 小结 元字符和用来定义一个字符集合,必须匹配该集合

9、里的字符之一。定义一个字符集合的具 体方法有两种: 1. 把所有的字符都列举出来 2. 利用元字符-以字符区间的方式给出 字符集合可以用元字符来求非,这将把给定的字符集合强行排除在匹配操作外除了该字 符集合里的字符,其他字符都可以被匹配。 使用元字符 对特殊字符进行转义 元字符是一些在正则表达式里有特殊含义的字符。英文句号.是一个元字符,用来匹配任何一 个单个字符;左方括号也是一个元字符,表示一个字符集合的开始。 因为元字符在正则表达式中有特殊的含义,所以这些字符无法代表它们本身。需要在元字符的 前面加上一个反斜杠进行转义转义序列.将匹配.本身。 文本 1. homebensales 正则表达

10、式 1. 结果 匹配空白字符 在进行正则表达式搜索的时候,我们经常会遇到需要对原始文本里的非打印空白字符进行匹配 的情况。比如找出所有的制表符或换行符,这类字符很难被直接输入到正则表达式里,可以用 如下的特殊元字符来输入。 元字符说明 b回退(并删除)一个字符(Backspace键) f换页符 n换行符 r回车符 t制表符 v垂直制表符 文本 1. “101“,“Ben“,“Forta“ 2. 3. “102“,“Jim“,“James“ 正则表达式 1. rnrn 结果 1. “101“,“Ben“,“Forta“ 2. “102“,“Jim“,“James“ 分析 rn匹配一个“回车+换行

11、”组合,Windows操作系统都把这个组合作为文本行的结束标 签。使用正则表达式rnrn进行的搜索将匹配两个连续的行尾标签,正是两条记录之间的 空白行。 匹配文本结束标签 - Windows:rn - Linux : n 同时适用于Windows和Linux系统的正则表达式,应该包含一个可选的r和一 个必须被匹配的n。 匹配特定的字符类别 字符集合(匹配多个字符中的某一个)是最常见的匹配形式,而一些常用的字符集合可以 用特殊元字符来替代。 匹配数字(非数字) 元字符说明 d任何一个数字字符(等价于0-9) D任何一个非数字字符(等价于0-9) 匹配字母和数字(非字母和数字) 元字符说明 w任何

12、一个字母数字字符或下划线字符(a-zA-Z0-9_) W任何一个非字母数字字符或下划线字符(a-zA-Z0-9_) 文本 1. 11213 2. A1C2E3 3. 48075 4. M1B4F2 正则表达式 1. wdwdwd 结果 匹配空白字符(非空白字符) 另一种常见的字符类别是空白字符。 元字符说明 s任何一个空白字符(等价于fnrtv) S任何非一个空白字符(等价于fnrtv) 小结 主要讲解用来匹配特定字符(制表符、换行符)和用来匹配一个字符集合或字符类(数字、字 母数字字符)的元字符。这些简短的元字符可以用来简化正则表达式模式。 重复匹配 有多少个匹配 需要一种能够匹配多个字符的

13、方法,可以通过几个特殊的元字符来实现。 匹配一个或多个字符 要想匹配同一个字符(或字符集合)的多次重复,只要简单地给这个字符(或字符集合)加上 一个+字符作为后缀就可以了。+匹配一个或多个字符(至少一个,不匹配零个字符的情 况)。 比如:a匹配a本身,a+将匹配一个或多个连续出现的a。 文本 1. Send personal email to . For questions 2. about a book use . Feel 3. free to send unsolicited email to . 正则表达式 1. w+w+.w+ 结果 这个模式把原始文本里的3个电子邮件地址全都正确匹配

14、出来了。正则表达式中第一个w+匹 配一个或多个字母数字字符,再用第二个w+匹配后面的一个或多个字符,然后匹配一个.字 符(使用转移序列.),最后用第三个w+匹配电子邮件地址的剩余部分。 匹配零个或多个字符 +匹配一个或多个字符,但不匹配零个字符+最少也要匹配一个字符。那么,如果你想匹 配一个可有可无的字符也就是该字符可以出现零次或多次的情况,你该怎么办呢? 这种匹配需要用*元字符来完成,把它放在一个字符(或一个字符集合)的后面,就可以匹配 该字符(或字符集合)连续出现零次或多次的情况。 文本 1. Hello is my email. 正则表达式 1. w+w.*w.+.w+ 结果 w+:负

15、责匹配电子邮件地址中第一个字符(一个字母数字字符,但是不包括.)。 w.*:负责匹配电子邮件第一个字符之后、字符之前的所有字符这个部分可以包含零 个或多个字母数字字符和.字符。 匹配零个或一个字符 ?只能匹配一个字符(或字符集合)的零次或一次出现,最多不超过一次。如果需要在一段文 本里匹配某个特定的字符,而该字符可能出现、也可能不出现,?无疑是最佳的选择。 文本 1. The URL is http:/ to connect 2. securely use https:/ 正则表达式 1. https?:/w./+ 结果 这个模式的开头部分是https?。?在这里的含义是:前面的字符s要么不出现,要么最多出现 一次。 在Windows上使用模式rnrn去匹配空白行,在Linux系统的正则表达式是nn。同时适 用于Windows和Linux系统的正则表达式应该包含一个可选的r和一个必须的n。 1. r?nr?n 匹配的重复次数 正则表达式里的+ * ?解决了许多问题,但是光靠这些还不够。比如: +和*匹配的字符个数没有上限。我们无法为它们将匹配的字符个数设定一个最大值。 +、*和?至少匹配零个或一个字符。我们无法为它

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 管理学资料

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