正则表达式
一、正则表达式介绍:
正则表达式是用某种模式去匹配一类字符串的公式 。
在自动化的测试过程中经常需要对文本数据进行查,对字符串进行比较匹配等,这个时候就需要用到正则表达式
元字符
 
.
匹配任何单个字符
[xyz]
匹配括号中的任何一个字符
[^xyz]
匹配除了括号中的任何一个字符
[x-y]
匹配括号中字符区间内的任何一个字符
*
匹配0或多个正好在它之前的那个字符
+
匹配1或多个正好在它之前的那个字符
?
匹配01个正好在它之前的那个字符
()
()之间的表达式定义为“组”
|
将多个匹配条件进行逻辑“或”运算
^
匹配输入字符串的开始位置
$
匹配输入字符串的结束位置
\w
匹配任何字母数字字符和下划线
\W
匹配任何非字母数字字符
\
用来将这里列出的这些元字符当作普通的字符来进行匹配
{}
匹配指定数目的字符
二、正则表达式特征
匹配任何单个字符(.
.匹配任何单个字符。例如正则表达式“”匹配“12B”,“B3B”,“123”,“ABC”,“$g%”等。
匹配括号中的任何一个字符([xyz]
匹配方括号中的任何一个字符。例如正则表达式“[abc][12]”匹配“a1”,“a2”,“b1”,“b2”,“c1”和“c2”。
匹配除了括号中的任何一个字符([^xyz]
这里的”^” 用法是“排除”,匹配除了指定区间之外的字符。例如“[^a][12]”与“a1”和“a2”不匹配,但是可以匹配“11”,“12”,“c1”等。
匹配括号中字符区间内的任何一个字符([x-y]
[d-h]结构的正则表达式将匹配在d到p之间的任何一个字符。例如“[abcdef][123]”可以写出“[a-f][1-3]”
匹配0或多个正好在它之前的那个字符(*
“*”用于匹配0或多个正好在它之前的那个字符。例如“a*”可以匹配“a”,“aa”,“aaa”等,正则表达式“.*”意味着能够匹配任意数量的任何字符。请看另外的一些例子:
“aa*”可匹配“a”,“aa”,“aaa”等;
“[abc][1-4]*”可匹配“a”,“b”,“c”,“a1”,“b1”,“a12”,“a1234344”等;
“User.*”可匹配任何以“User”开头的字符串。
*******************************************************************************
注意:很多人会有这样的错误,用“User*”匹配以“User”开头的字符串,而“User*”只匹配像“Use”,“User”,“Userr”等
*******************************************************************************
匹配1或多个正好在它之前的那个字符(+
regex匹配
“+”用于 匹配1或多个正好在它之前的那个字符。例如“aa*”可以等同于“a+”。
“123+”可匹配“123”,“1233”,“1233”等;
“[123]+”可匹配“1”,“2”,“3”,“12”,“23”等
匹配01个正好在它之前的那个字符(?)
“?”用于匹配0或1个正好在它之前的那个字符。例如“a[123]?”可匹配“a”,“a1”,“a2”和“a3”。
正则表达式分组(())
用括号“()”组成一个正则表达式。例如(123)+匹配“123”,“123123”,“123123123”等,与“123+”的含义是不一样的。
匹配多个表达式中的一个(|
“|”符号是指进行逻辑“或”运算。例如“(123)|(abc)”可以匹配“123”或“abc”。
匹配输入字符串的开始位置(^
^符号在正则表达式的开头用于匹配一行的开始。例如“^abc.*”能够匹配以“abc”开始的字符串。
匹配输入字符串的结束位置($
“$”符号在正则表达式的末尾用于匹配一行的结束。例如“abc$”能够匹配“abc”,“123abc”,“aabc”等,而“^abc$”只能匹配“abc”。
匹配任何字母数字字符和下划线(\w
“\w”可匹配任何字母数字和下划线。这个用法与表达式“[A-Za-z0-9_]”是一样的。例如“\w\w”能够匹配“A_”,“a1”等。
匹配任何非字母数字字符(\W
“\W”可匹配任何非字母和非数字的字符,是与“\w”相反的,它可以等同于“[^A-Za-z0-9]”。例如“\W”可以匹配“$”,“%”,“@”等。
转义字符(\
。。
匹配指定数目的字符({}
“{}”匹配X个正好在它之前的那个字符。使用这个符号有多种方法,见表13-2
表13-2
字符
说明
举例
{M}
M个匹配的模式
A{2}仅可以匹配“AA”
{M,}
M个或更多个匹配的模式
A{1,}可以匹配“A”,“AA”等,这个表达式等同于“A+”,“A{0}”等同于“A*”
{M,N}
至少M个且至多N个匹配的模式
A{1,3}可以匹配“A”,“AA”和“AAA”
其他正则表达式字符
虽然在QTP的用户手册中没有列举所有的正则表达式字符,但是它支持所有的VBScript正则表达式字符。下面表13-3中列出了其他的一些正则表达式符号。
表13-3
字符
说明
举例
\d
匹配0到9的任意数字,等同于“[0-9]”.
“\d{2}”可以匹配01到99的所有数字,但是它不匹配1到9的单数
\D
匹配任意的非数字字符,等同于“[^0-9]”.
“\D”可以匹配“A”,“&”,“$”等
\num
匹配num次,其中num是一个正整数,
“(\d)\|\|”will match numbers”111”,”222”,”333”
举例:
1、
/[A-Z]/
    将会与从A到Z范围内任何一个大写字母相匹配。
/[a-z]/
    将会与从a到z范围内任何一个小写字母相匹配。
/[0-9]/
    将会与从0到9范围内任何一个数字相匹配。
/([a-z][A-Z][0-9])+/
    将会与任何由字母和数字组成的字符串。
2、问题:能够匹配如下三个字符串的正则表达式是什么?
“test.app”,”qa.app”,”www.app
答:(test|qa|www)\.app\
3、问题:用以匹配日期型MM/DD/YY的正则表达式如何写?
答:MM是1-12的数字,可以分成两部分,一部分是:0-9一部分是两位的10,11,12
[0-9]|1[0-2],
DD是1-31的数字,可以分成三部分一部分是0-9一部分是10-19,一部分是20-29
一部分是30-31,可以这样写[0-9]|1[0-9]|2[0-9]|3[0-1]或[1-9]|[1-2][0-9]|3[0-1]
YY的正则表达式则是“[0-9][0-9]”。
组合起来日期型的正则表达式就是“([1-9]|1[0-2])/( [1-9]|[1-2][0-9]|3[0-1])/([0-9][0-9])”。
三、在QTP中使用正则表达式
'为文本框创建一个Description对象
Set oTextBox = Description.Create
'此正则表达式匹配以name的值
oTextBox("name").value = "name.*"
'此属性默认的情况下市true,所以可以忽略此行代码
oTextBox("name").RegularExpression = True
'访问name属性以那么开头的第一个文本框
oTextBox("index").value = 0
'Set the value of the text box
Browser("").Page("").WebEdit(oTextBox).Set "Value"
四、正则表达式的实际应用
4.1描述性编程中的应用
正常的测试判断脚本:
If Browser("PetShop").Page("PetShop").WebArea("Fish").Exist then
    …
End if
百度例1:
systemutil.Run "","www.baidu/"

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。