51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2509|回复: 6
打印 上一主题 下一主题

[原创] 正则表达式匹配“2008年01月”

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-3-10 15:53:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天遇到一件怪事,有关正则表达式匹配的,问题虽然解决,但是道理有点解释不通,大家一起看看

一个网页元素上有“2008年01月”这段字符串,我使用正则表达式匹配它

开始我这么写
...object("innetext:="&"2008"&".*"&"01"&".*").....
但是总是找不到

在半天不思其解以后,突然灵机一动,改为
...object("innetext:="&"2008"&".*"&"01"&"年").....
可以匹配

再改为
...object("innetext:="&"2008"&".*"&"01"&".").....
就可以匹配了

与原来相比,就是少一个*
*匹配前导字符零个或多个,就是没有一个,因此不能匹配"月"

但是中间的“年”怎么就可以呢?怎么能用“.*”来匹配呢?这就解释不通了。我左思右想不得其解
大家来讨论一下吧
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2008-3-10 17:00:55 | 只看该作者
.*可以用来匹配任意多个字符~问题的关键是你最开始写...object("innetext:="&"2008"&".*"&"01"&".*").....的时候报了什么错~
如果是报...match one or more...则就是对象不唯一,即还存在innertext为2008年01月......的对象~
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2008-3-11 08:38:23 | 只看该作者
...object("innetext:="&"2008"&".*"&"01"&".*").....找不到对象,也就是根本和2008年01月根本不匹配
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2008-3-11 10:13:57 | 只看该作者
真的不匹配么,别太武断哦,建议多查看帮助文档~~~以下代码会告诉你究竟是否匹配~~
Function RegExpTest(patrn, strng)
  Dim regEx, retVal        
  Set regEx = New RegExp     
  regEx.Pattern = patrn        
  regEx.IgnoreCase = False     
  retVal = regEx.Test(strng)      
  Set regEx=Nothing
  RegExpTest=retVal
End Function
MsgBox(RegExpTest("2008.*01.*", "2008年01月"))
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2008-3-12 09:52:54 | 只看该作者
应该是不匹配,我用下面的代码检验的
if ...object("innetext:="&"2008"&".*"&"01"&".*").exsit(3)
msgbox("good")
else
msgbox("bad")
end if

总是bad
你说的这个函数采用的是VBS的RegExp正则表达式匹配引擎,不是QTP的,你怎么知道两个是完全一样的呢?
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2008-3-12 12:20:35 | 只看该作者
LZ可以尝试在月后边随便加个字符,看使用.*能否匹配到。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2008-3-12 14:03:02 | 只看该作者
所以说让你多看看帮助文档~该函数就是在QTP的帮助文档中找的,一个字母都没改~
若你觉得这个还不够爽,那可以用object.ChildObjects方法,看看用你的描述能够找到几个对象~
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-10 21:41 , Processed in 0.083597 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表