《软件测试》课件:正则表达式入门.ppt

上传人(卖家):罗嗣辉 文档编号:2152556 上传时间:2022-03-07 格式:PPT 页数:21 大小:250.50KB
下载 相关 举报
《软件测试》课件:正则表达式入门.ppt_第1页
第1页 / 共21页
《软件测试》课件:正则表达式入门.ppt_第2页
第2页 / 共21页
《软件测试》课件:正则表达式入门.ppt_第3页
第3页 / 共21页
《软件测试》课件:正则表达式入门.ppt_第4页
第4页 / 共21页
《软件测试》课件:正则表达式入门.ppt_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、正则表达式入门陈大卫2022年3月5日目录目录 什么是正则表达式 常用元字符 重复 反意 匹配条件逻辑或运算 分组 贪婪与懒惰 其他提示什么是正则表达式什么是正则表达式 正则表达式(regular expression)就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个特征。比如 表达式“ab+” 描述的特征是“一个 a 和 任意个 b ”,那么 ab, abb, abbbbb 都符合这个特征。正则表达式的用处正则表达式的用处1. 验证字符串是否符合指定特征,比如验证是否是合法的邮件地址。2. 用来查找字符串,从一个长的文本中查找符合指定特征的字符串,比查找固定字符串更

2、加灵活方便。3. 用来替换,比普通的替换更强大。 元字符元字符 正则表达式由一些普通字符和一些元字符(metacharacters)组成。普通字符包括大小写的字母和数字,而元字符则具有特殊的含义常用的元字符常用的元字符元字符描述将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,n 匹配字符 n。n 匹配一个换行符。序列 匹配 而 ( 则匹配 (。 .匹配除 n 之外的任何单个字符。要匹配包括 n 在内的任何字符,请使用象 .n 的模式。例如正则表达式r.t 匹配这些字符串:rat、rut、r t,但是不匹配root。匹配输入字符串的开始位置。例如正则表达

3、式When in 能够匹配字符串When in the course of human events的开始,但是不能匹配What and When in the。$匹配输入字符串的结束位置。例如正则表达式book$ 能够匹配字符串This is a book的末尾,但是不能匹配字符串They have many books。xyz字符集合。匹配所包含的任意一个字符。例如,abc 可以匹配 plan 中的 a。a-z字符范围。匹配指定范围内的任意字符。例如,a-z 可以匹配 a 到 z 范围内的任意小写字母字符。还可以制定多个区间,例如正则表达式A-Za-z可以匹配任何大小写字母。常用的元字符常

4、用的元字符元字符描述b匹配一个单词边界,也就是指单词和空格间的位置。例如, erb 可以匹配 never 中的 er,但不能匹配 very 中的 er。 d匹配一个数字字符。等价于 0-9。s匹配任何空白字符,包括空格、制表符、换页符等等。w匹配包括下划线的任何单词字符。等价于 A-Za-z0-9_。n匹配一个换行符。等价于 x0a。r匹配一个回车符。等价于 x0d。重复重复元字符描述*匹配前面的子表达式零次或多次。例如,zo* 能匹配 z 以及 zoo。* 等价于0,。+匹配前面的子表达式一次或多次。例如,zo+ 能匹配 zo 以及 zoo,但不能匹配 z。+ 等价于 1,。?匹配前面的子表

5、达式零次或一次。例如,do(es)? 可以匹配 do 或 does 中的do 。? 等价于 0,1。nn 是一个非负整数。匹配确定的 n 次。例如,o2 不能匹配 Bob 中的 o,但是能匹配 food 中的两个 o。n,n 是一个非负整数。至少匹配n 次。例如,o2, 不能匹配 Bob 中的 o,但能匹配 foooood 中的所有 o。o1, 等价于 o+。o0, 则等价于 o*。n,mm 和 n 均为非负整数,其中n = m。最少匹配 n 次且最多匹配 m 次。例如,o1,3 将匹配 fooooood 中的前三个 o。o0,1 等价于 o?。请注意在逗号和两个数之间不能有空格。反意反意元字

6、符描述B匹配非单词边界。erB 能匹配 verb 中的 er,但不能匹配 never 中的 er。D匹配一个非数字字符。等价于 0-9。S匹配任何非空白字符。等价于 fnrtv。W匹配任何非单词字符。等价于 A-Za-z0-9_。xyz负值字符集合。匹配未包含的任意字符。例如,abc 可以匹配 plain 中的p。a-z负值字符范围。匹配任何不在指定范围内的任意字符。例如,a-z 可以匹配任何不在 a 到 z 范围内的任意字符。 匹配条件逻辑或运算匹配条件逻辑或运算x|y匹配 条件x 或条件 y,将两个匹配条件进行逻辑“或”(Or)运算。 例如正则表达式(him|her) 匹配it belon

7、gs to him和it belongs to her,但是不能匹配it belongs to them.分组分组 我们已经提到了怎么重复单个字符(直接在字符后面加上限定符就行了)。但如果想要重复多个字符又该怎么办?你可以用小括号来指定子表达式(也叫做分组) 例如(d1,3.)3d1,3是一个简单的IP地址匹配表达式,可惜也将匹配256.300.888.999这种不可能存在的IP地址。贪婪与懒惰贪婪与懒惰 当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。以这个表达式为例:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来

8、搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。 贪婪与懒惰贪婪与懒惰 有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符。前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号?。这样.*?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。懒惰限定符懒惰限定符元字符描述*?重复任意次,但尽可能少重复+?重复1次或更多次,但尽可能少重复?重复0次或1次,但尽可能少重复n,m?重复n到m次,但尽可能少重复n,?重复n次以上,但尽可能少重复最先匹配原则最先匹配原则 a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的

9、话,它会匹配aab(第一到第三个字符)和ab(第四到第五个字符)。 为什么第一个匹配是aab(第一到第三个字符)而不是ab(第二到第三个字符)?简单地说,因为正则表达式有另一条规则,比懒惰贪婪规则的优先级更高:最先开始的匹配拥有最高的优先权The match that begins earliest wins。 其他提示其他提示 如果想要了解各种正则引擎还支持那些复杂的正则语法,可参见各正则引擎的说明文档。 如果要要求表达式所匹配的内容是整个字符串,而不是从字符串中找一部分,那么可以在表达式的首尾使用 和 $,比如:d+$ 要求整个字符串只有数字。 如果要求匹配的内容是一个完整的单词,而不会是

10、单词的一部分,那么在表达式首尾使用 b,比如:使用 b(if|while|else|void|int)b 来匹配程序中的关键字。 表达式不要匹配空字符串。否则会一直得到匹配成功,而结果什么都没有匹配到。比如:准备写一个匹配 123、123.、123.5、.5 这几种形式的表达式时,整数、小数点、小数数字都可以省略,但是不要将表达式写成:d*.?d*,因为如果什么都没有,这个表达式也可以匹配成功。更好的写法是:d+.?d*|.d+。 其他提示其他提示 能匹配空字符串的子匹配不要循环无限次。如果括号内的子表达式中的每一部分都可以匹配 0 次,而这个括号整体又可以匹配无限次,那么情况可能比上一条所说

11、的更严重,匹配过程中可能死循环。虽然现在有些正则表达式引擎已经通过办法避免了这种情况出现死循环了,比如 .NET 的正则表达式,但是我们仍然应该尽量避免出现这种情况。如果我们在写表达式时遇到了死循环,也可以从这一点入手,查找一下是否是本条所说的原因。 合理选择贪婪模式与非贪婪模式。 或 | 的左右两边,对某个字符最好只有一边可以匹配,这样,不会因为 | 两边的表达式因为交换位置而有所不同。综合练习综合练习注册帐号: 5-20位字母、数字或下划线组合,首字符必须为字母 带区号的电话号码 xxx-xxxxxxxx或者xxxx-xxxxxxx 正确的IP地址描述 (0-255). (0-255). (0-255). (0-255)参考答案参考答案 A-Za-zw4,19$ (d3-d8$)|(d4-d7$) d3-1-9d7$电话首位不为0 (20-4d|250-5|01?dd?).)3(20-4d|250-5|01?dd?)问题与讨论问题与讨论谢谢谢谢 大家大家

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(《软件测试》课件:正则表达式入门.ppt)为本站会员(罗嗣辉)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|