xiehuahere 发表于 2010-5-12 10:46:12

关于正则表达式匹配窗口标题的问题【已解决】

本帖最后由 xiehuahere 于 2010-5-12 14:48 编辑

学习正则表达式,遇到点问题。

窗口标题格式为:TitleTEST 1.12.2.3 - My_Name- HelloKitty
说明:
1)需要精确匹配的字符串:TitleTEST以及两个“-”连接符
2)其他:1.12.2.3为版本号,数字位数固定;两个“-”之后的字符串可以包含字母、数字、下划线或汉字。

我参照《正则表达式30分钟入门教程》http://deerchao.net/tutorials/regex/regex.htm写的如下脚本,总是弹出失败对话框。
Opt("WinTitleMatchMode", 4)
Const $MY_WINDOW = ""
Run(@ProgramFilesDir & "xxx\test.exe")
If Not WinWaitActive($MY_WINDOW, "", 3) Then MsgBox(48, "Error", "Fail to open window")

zjimmy 发表于 2010-5-12 11:09:44

我想是不是这样:“\w*”里头应该匹配了“-”了吧?

lpxx 发表于 2010-5-12 11:21:17

本帖最后由 lpxx 于 2010-5-12 11:25 编辑

最近穷死了,骗点分^Title \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} \-+\-.*$就看你要不要空格了Title \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} \-+\-

afan 发表于 2010-5-12 11:47:49

LZ 的代码我这测试正常。
不正常的原因可能有2:
1,WinWaitActive 3s timeout 可能不够,尝试调整更大的数值;
2,Active 的问题,尝试使用如下代码测试:
If Not WinWait($MY_WINDOW, "", 3) Then MsgBox(48, "Error", "Fail to open window")

xiehuahere 发表于 2010-5-12 13:24:12

本帖最后由 xiehuahere 于 2010-5-12 13:40 编辑

回复 3# lpxx

谢谢啊,小费免不了的,呵呵
问一下啊,\u4e00-\u9fa5 是Unicode十六进制代码?什么意思?
还有,“-”和“.”前需要用转义符\吗?

xiehuahere 发表于 2010-5-12 13:30:24

本帖最后由 xiehuahere 于 2010-5-12 14:07 编辑

回复 4# afan

多谢版主关注。我这里列出的例子的确是可以的。
我又尝试了一下,发现实际中"-"后面的字符串含有空格,这个超出了\w能表达的范畴导致。
使用 [\w ]*来匹配,改为:
^TitleTEST \d.\d\d.\d.\d - [\w ]*- [\w ]*$
测试OK。

lpxx 发表于 2010-5-12 20:31:59

回复 5# xiehuahere


没仔细看你的题目要求,\u4e00-\u9fa5匹配汉字
页: [1]
查看完整版本: 关于正则表达式匹配窗口标题的问题【已解决】