(二十一)正则表达式
一、元字符
(1).匹配除了换行符以外的任意一个字符
(2)\w 匹配任意一个字母、数字、下划线
(3)\s 匹配任意一个空白符(空格、Tab空格、换行符)
(4)\d 匹配的任意一个数字
(5)\b 匹配单词的开始和结束的位置
(6)^ 匹配字符串的开始位置
(7)$ 匹配字符串的结束位置
容易混淆的是:
①\bhi\b检索的是字符串中的单词
比如:”hi,Did you see him?” 可以找到一个单词
②^amber$:指的是字符串就是这个amber
My name is amber.
将检索不到任何内容
③hi:检索包含这两个字符的,所以会检索出包含hi的单词
二、常用的限定符
(1)* 重复0次或多次
(2)+ 重复1次或多次
(3)?重复0次或1次
(4){n}重复n次
(5){n,}重复n次或者多次
(6){n,m}重复n次到m次
\bhi\b.*\bLucy\b:匹配的是hi附近连接的一个Lucy
例如:hi,beautiful Lucy
0\d{2}-\d{8}
^\d{5,12}$ :数字长度5到12
三、正则表达式的分组—()
被()起来的部分为子表达式,具有最高的优先级
例1:正则表达式(ab)+,可以匹配ab,abab,ababab
正则表达式ab+,可以匹配人ab,abb,abbb……
例2:匹配0-255的数字,格式可以为0,00,000,1,01,001,099
分析:①200-255:25[0-5]|2[0-4]\d
②100-199:1\d\d
③10-99:[1-9]\d
④00-09:0\d ③④可以合并为:\d\d(00--99)
⑤000-099:0\d{2} ②⑤可以合并为:[0-1]\d\d (000-199)
⑥ :④⑤合并为:[0-1]?\d\d
⑦0-9: 与⑥合并:[0-1]?\d\d?
最终正则表达式:25[0-5]|2[0-4]\d|[0-1]?\d\d?
例3:匹配有效的IP地址的正则表达式,如172.166.7.32
(25[0-5]|2[0-4]\d|[0-1]?\d\d?\.){3}(25[0-5]|2[0-4]\d|[0-1]?\d\d?)
例4:检查日期
月份,可以写01、1:1[0-2]|0?[1-9]
日期,可以写01、1:0?[1-9]|[1-2][0-9]|3[01]
(1[0-2]|0?[1-9])[-./](0?[1-9]|[1-2][0-9]|3[01])
注意/不是转义字符,[-./]只是普通字符
四、正则表达式在QTP中的应用
- 检查点的预期结果,使用正则表达式;编辑检查点时,勾选“regular expression”
对象仓库(TO)中对象的属性值,使用正则表达式,解决Test运行时,无法识别被测对象(RO)的问题
三、练习:
Flight系统显示订单信息,Price显示格式是否正确
$\d+.\d{2}
五、可以自定义正则表达式
Dim regEx, retVal ' Create variable.
Set regEx = New RegExp ' Create regular expression.
regEx.Pattern = patrn ' Set pattern.
regEx.IgnoreCase = False ' Set case sensitivity.
retVal = regEx.Test(strng) ' Execute the search test.