林鸣 发表于 2011-12-18 00:26:35

stringregexp的使用问题

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

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

林鸣 发表于 2011-12-18 00:35:50

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


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

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

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

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

麻烦大家看一下,刚刚接触autoit,希望帮一下忙!

user3000 发表于 2011-12-18 07:57:18

$sText = '退出读取校验擦除编程设置复位编辑' & @CRLF & _
'重载' & @CRLF & _
'加密' & @CRLF & _
'模式2' & @CRLF & _
'模式' & @CRLF & _
'完成次数:8失败次数:0用户中止次数:0合计次数:3 ' & @CRLF & _
'模式3' & @CRLF & _
'模式4'
你的字符串应该是这样.
如果只是为了匹配数字8,用 '\d' 代替 '.+?' 更好

林鸣 发表于 2011-12-18 11:36:32

貌似不行啊,抱歉,可能我的问题没有表达清楚,我把具体问题在发一下:

$var = WinGetText("","")

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

sanmoking 发表于 2011-12-18 12:02:38


$var = WinGetText("","")
$txt1 = "完成次数:"
$txt2 = "失败次数"
$num1 = StringInStr($var, $txt1);分析数据,俺不会正则,只好舍近求远了
$num2 = StringInStr($var , $txt2);第二次分析数据
$x = StringMid($var , $num1 + 5, $num2 - $num1 - 5)
MsgBox(0,"如何抓取完成次数后的数字?","抓取的结果:"$x)

bdancerlc 发表于 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)

bdancerlc 发表于 2011-12-18 13:23:15

貌似 楼主发帖发错地方了!...

林鸣 发表于 2011-12-18 14:45:07

6楼的朋友,您好:
    我运行了你的代码,可惜抓不到数字;


$var = WinGetText("","")
;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

老师们,帮忙看一下,我下面的一个问题,谢谢

bdancerlc 发表于 2011-12-18 18:22:46

回复 8# 林鸣


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

建议用正则,简单,高效..易用...

林鸣 发表于 2011-12-18 19:07:29

回复 13# bdancerlc


    谢谢啊,初来咋到,不知道如何操作,谢谢的提醒!

林鸣 发表于 2011-12-18 19:11:01

回复 13# bdancerlc


哦,大虾,不知可有时间,能否帮我看一下10楼的问题,我很想知道为什么!谢谢
页: [1] 2
查看完整版本: stringregexp的使用问题