找回密码
 加入
搜索
查看: 7289|回复: 17

[AU3基础] stringregexp的使用问题

  [复制链接]
发表于 2011-12-18 00:26:35 | 显示全部楼层 |阅读模式
$sText = '退出读取校验擦除编程设置复位编辑重载  
加密  
模式2
模式   
完成次数:8  失败次数:0  用户中止次数:0  合计次数:3
模式3
模式4
模式5'
$aReg = StringRegExp($sText, '完成次数:(.+?)  失败次数', 3)
$aReg = StringRegExp(?<=完成次数).*(?= 失败次数')
MsgBox(0, '替换结果', $aReg[0])

大侠们帮忙看一下,很着急,为什么数字“8”不能匹配出来?谢谢啦

评分

参与人数 1金钱 -10 收起 理由
afan -10

查看全部评分

 楼主| 发表于 2011-12-18 00:35:50 | 显示全部楼层
$sText = '退出读取校验擦除编程设置复位编辑
重载
加密  
模式2
模式  
完成次数:8  失败次数:0  用户中止次数:0  合计次数:3
模式3
模式4'
$aReg = StringRegExp($sText, '完成次数:(.+?)  失败次数', 3)


MsgBox(0, '替换结果', $aReg[0])

抱歉,第一份代码写的明显不对,但这样写,为什么得不到数字“8”?
而我把它们写成一行就可以得到数字“8”了,为什么?
代码如下:

$sText = '退出读取校验擦除编程设置复位编辑重载 加密  模式2模式  完成次数:8  失败次数:0  用户中止次数:0  合计次数:3 模式3模式4'
$aReg = StringRegExp($sText, '完成次数:(.+?)  失败次数', 3)

MsgBox(0, '替换结果', $aReg[0])

麻烦大家看一下,刚刚接触autoit,希望帮一下忙!
发表于 2011-12-18 07:57:18 | 显示全部楼层
$sText = '退出读取校验擦除编程设置复位编辑' & @CRLF & _
'重载' & @CRLF & _ 
'加密' & @CRLF & _
'模式2' & @CRLF & _
'模式' & @CRLF & _
'完成次数:8失败次数:0用户中止次数:0合计次数:3 ' & @CRLF & _
'模式3' & @CRLF & _
'模式4' 

你的字符串应该是这样.
如果只是为了匹配数字8,  用 '\d' 代替 '.+?' 更好

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

 楼主| 发表于 2011-12-18 11:36:32 | 显示全部楼层
貌似不行啊,抱歉,可能我的问题没有表达清楚,我把具体问题在发一下:

$var = WinGetText("[CLASS:TForm1]","")

MsgBox(0,"如何抓取完成次数后的数字?",$var)
通过这个句代码,我抓到了图片上的信息,我现在就想获取图片信息里“完成次数”后的数字,
不知道大家清楚了吗,麻烦大虾们帮忙,谢谢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-12-18 12:02:38 | 显示全部楼层

$var = WinGetText("[CLASS:TForm1]","")
$txt1 = "完成次数:"
$txt2 = "  失败次数"
$num1 = StringInStr($var, $txt1);分析数据,俺不会正则,只好舍近求远了
$num2 = StringInStr($var , $txt2);第二次分析数据
$x = StringMid($var , $num1 + 5, $num2 - $num1 - 5)
MsgBox(0,"如何抓取完成次数后的数字?","抓取的结果:"$x)
发表于 2011-12-18 13:21:19 | 显示全部楼层

$sText = '退出读取校验擦除编程设置复位编辑' & @CRLF & _
'重载' & @CRLF & _ 
'加密' & @CRLF & _
'模式2' & @CRLF & _
'模式' & @CRLF & _
'完成次数:8失败次数:0用户中止次数:0合计次数:3 ' & @CRLF & _
'模式3' & @CRLF & _
'模式4'
$aReg = StringRegExp($sText,'完成次数:(\d+)',3)
If IsArray($aReg) Then MsgBox(0,'完成次数',$aReg[0])
发表于 2011-12-18 13:23:15 | 显示全部楼层
貌似 楼主发帖发错地方了!...
 楼主| 发表于 2011-12-18 14:45:07 | 显示全部楼层
6楼的朋友,您好:
    我运行了你的代码,可惜抓不到数字;


$var = WinGetText("[CLASS:TForm1]","")
;MsgBox(0,"如何抓取完成次数后的数字?",$var)

$txt1 = "完成次数:"

$txt2 = "  失败次数"

$num1 = StringInStr($var, $txt1);分析数据,俺不会正则,只好舍近求远了

MsgBox(0,"如何抓取完成次数后的数字?",$num1)   ;这里抓取不到“完成次数”,不知为什么

;$num2 = StringInStr($var , $txt2);第二次分析数据

;$x = StringMid($var , $num1 + 5, $num2 - $num1 - 5)

;MsgBox(0,"如何抓取完成次数后的数字?","抓取的结果:$x")

谢谢大家,
 楼主| 发表于 2011-12-18 15:01:39 | 显示全部楼层
现在又遇到了一个比较简单的问题,纠结着!
大侠们能先帮忙解决一下!谢谢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2011-12-18 15:25:18 | 显示全部楼层
这是新的发现,不知道为什么?大侠们看看吧!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2011-12-18 17:11:56 | 显示全部楼层
大侠们过来解决一下吧
 楼主| 发表于 2011-12-18 17:14:49 | 显示全部楼层
老师们,帮忙看一下,我下面的一个问题,谢谢
发表于 2011-12-18 18:22:46 | 显示全部楼层
回复 8# 林鸣


无语了,不知所云,你哪里用的我的代码?...
还有,你不点回复,来回帖,别人是不会发现的,
我是逛论坛无聊,经过,来看看...


建议用正则,简单,高效..易用...
 楼主| 发表于 2011-12-18 19:07:29 | 显示全部楼层
回复 13# bdancerlc


    谢谢啊,初来咋到,不知道如何操作,谢谢的提醒!
 楼主| 发表于 2011-12-18 19:11:01 | 显示全部楼层
回复 13# bdancerlc


哦,大虾,不知可有时间,能否帮我看一下10楼的问题,我很想知道为什么!谢谢
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-26 10:02 , Processed in 0.078907 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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