萧萧的枫林,萧萧的我

QTP中正则表达式搜索/匹配字符串方法

上一篇 / 下一篇  2009-06-14 15:38:51 / 个人分类:QTP

由于QTP是使用的vb语言,所以其实就是VB中正则表达式的使用,
我稍微总结下喽!其中加入了我的理解,也正是由于我充分理解了正则表达式对象,所以在QTP中对于很多情况的判断游刃有余,希望每一个看到这篇文章的希望在QTP上有所深入的人,认真,仔细的理解正则表达式,它是一个非常强大的东西.
  
第一.首先正则表达式使用如下对象.
1. RegExp 这是使用正则表达式匹配模式的主要对象了
  属性:
  Pattern:一个字符串,用来定义正则表达式<匹配规则>。
  IgnoreCase如果True,则忽略英文字母大小的匹配,False对大小写进行匹配。
  Global:设置True则必须匹配整个<匹配规则>,设置False只匹配第一个<匹配规则>。
  MultiLine:设置True则在多行中搜索。设置False则在换行时停止
  方法:
  Execute:返回一个MatchCollection对象,该对象包含每个成功匹配的Match对象。
  Replace返回一个将符合<匹配规则>的字符串替换为指定字符串。
  Test:返回一个布尔值,该值指示正则表达式是否与字符串成功匹配。

2. MatchCollection 是集合对象,该对象包含每个成功匹配的Match对象。

   属性:
  Count:匹配对象的总数。
  Item:匹配对象的索引。

3. Match 是成功匹配的对象。

   属性:
  FirstIndex:匹配对象所匹配字符串的起始位置。
  Length:匹配对象所匹配字符串的字符长度。
  SubMatches:匹配对象所匹配结果的子项。也就是<匹配规则>中下一个匹配项"一般一个()代表一个匹配项"
  Value:匹配对象所匹配的值。

 

第二. RegExp对象的Test方法:测试字符串是否符合匹配规则

FunctionRTest(s, p)
    
Setre =NewRegExp
     re.IgnoreCase =
False '设置是否忽略大小写
     re.Pattern = p
     RTest= re.Test(s)
End Function

一般我们在QTP中使用正则表达式来匹配字符串的话,会编写如上面那样的一个函数.使用方法如下
    s = "我的邮箱: test@163.com 。
欢迎致电!"'用来匹配的字符串,也就是实际上我们要测试的内容

    '检查测试字符串中是否包含数字
    p = "\d+" '测试是否包含数字的匹配规则
    
MsgBoxRTest(s, p)

    
'检查测试字符串是否全是由数字组成:
     p = "^\d+$"
    
MsgBoxRTest(s, p)

    
'检查测试字符串是否有大写字母:
     p = "[A-Z]+"
    
MsgBoxRTest(s, p)
    

第三. RegExp的Replace方法:把测试字符串中符合匹配规则的字符串替换为指定内容

FunctionStrReplace(s, p, r)
    
Setre =NewRegExp
     re.IgnoreCase =
True'设置忽略大小写
     re.Global =
True '设置必须匹配整个规则
     re.Pattern = p
     StrReplace = re.Replace(s, r)
End Function

上面的就是一般情况下使用这个方法所需要编写的一个函数,下面的就是如何使用

  
'以下是如何使用这个方法替换邮箱地址   
     s = "我的E-mail: Test@163.com 。欢迎致电!"
     p = "\w+@\w+\.(com|cn|net)"
     r = "E_Mail@sohu.net"
     s = StrReplace(s, p, r)
    MsgBox s
    
'结果:我的E-mail: E_Mail@sohu.net 。欢迎致电!

第四. Match的SubMatches属性:下一个匹配项的匹配内容

仔细看下面这段代码的含义...
    inpStr = "我的E-mail: lucky@163.com 。欢迎致电!"
    
Setre =NewRegExp
    re.Pattern = "(\w+)@(\w+).(\w+)" 
'注意!这个匹配规则有3个(),一个()代表一个匹配项

    Setmhs = re.Execute(inpStr)
    
Setmh = mhs(0)            '根据上面的匹配规则可以计算出只有一个匹配结果
    
    MsgBox "电子邮件地址是:"&mh.Value                
'这里是匹配的内容
    MsgBox "用户名是:"&mh.SubMatches(0)  '第一个括号<匹配项>中的内容
    MsgBox "邮箱是:"&mh.SubMatches(1)  '第二个括号<匹配项>中的内容
    MsgBox "域名是:"&mh.SubMatches(2)  '第三个括号<匹配项>中的内容
    


TAG:

unholyalliance的个人空间 引用 删除 unholyalliance   /   2010-04-06 14:08:40
很好,谢谢!
 

评分:0

我来说两句

我的栏目

日历

« 2024-05-02  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 9662
  • 日志数: 9
  • 图片数: 1
  • 建立时间: 2008-04-28
  • 更新时间: 2010-05-28

RSS订阅

Open Toolbar