找回密码
 加入
搜索
查看: 5336|回复: 16

[AU3基础] 正则替换一行字符,自己写的,不知大问题在那里

  [复制链接]
发表于 2019-9-23 15:44:10 | 显示全部楼层 |阅读模式
<div class="box02" style=" padding:10px; font-size:16px; line-height:30px;height:62px;">您是第 <font color="#CC0000">1713951</font> 位浏览者<br />今日访问量:<font color="#CC0000">106</font></div>

红色部分替换成空,或者将红色部分的数字替换成空
我自己写的
Local $s=StringRegExpReplace($HTMLSource,"您是第 <font color=""#CC0000"">\d+<\/font><\/div>","")
不懂那里错了。求解
$HTMLSource 是读取的变量


发表于 2019-9-23 16:02:21 | 显示全部楼层
本帖最后由 afan 于 2019-9-23 16:07 编辑

差3个字符
Local $ s= StringRegExpReplace($HTMLSource, '您是第 <font color="#CC0000">\d+<.+?\/font><\/div>', '')
p.s, 正则不要匹配多了字符,一般只会适得其反。 这里 您.+?v> 即可
发表于 2019-9-23 18:35:25 | 显示全部楼层
他这个好像不能反贪婪,只有这一句的话这样到时行!   Local $ s= StringRegExpReplace($HTMLSource, '您.+>\d+<\/font><\/div>', '')
发表于 2019-9-23 18:46:10 | 显示全部楼层
gzh888666 发表于 2019-9-23 18:35
他这个好像不能反贪婪,只有这一句的话这样到时行!   Local $ s= StringRegExpReplace($HTMLSource, '您.+ ...

没问题的,不管是一行还是无数行
 楼主| 发表于 2019-9-23 20:20:03 | 显示全部楼层
afan 发表于 2019-9-23 16:02
差3个字符
Local $ s= StringRegExpReplace($HTMLSource, '您是第 \d+', '')
p.s, 正则不要匹配多了字符 ...

Local $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
$oHTTP.Open("GET", "https://www.nsiac.org.cn/")
$oHTTP.Send()
Local $HTMLSource = $oHTTP.ResponseText
$oHTTP = 0
Local $s= StringRegExpReplace($HTMLSource, '您是第 <font color="#CC0000">\d+<.+?\/font><\/div>', '')
If FileExists("d:\nsiac.txt") Then
       
Else
        MsgBox(0, "通知", "首次运行自动建立对比源码文件", 10)
        FileWrite("d:\nsiac.txt", $s)
EndIf
$file = FileRead("d:\nsiac.txt")
If $file = $s Then
        MsgBox(0, "通知", "网站正常", 10)
Else
                MsgBox(0, "通知", "网站不正常正常", 10)

        SoundPlay("8359.wav", 1)
        nsiac()
EndIf

为什么明明相同,对比结果却说不同,我用软件WINMERGE对比也是说相同,au3怎么就说不同。。求大神指点迷津,我其他2个网址也是这样的方式,没问题
发表于 2019-9-23 21:34:40 | 显示全部楼层
basc 发表于 2019-9-23 20:20
Local $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
$oHTTP.Open("GET", "https://www.nsiac.org. ...

我这XP,获取网页源码失败,没法验证。用 ObjCreate('msxml2.xmlhttp') 方式获取到源码后,后面的比对均正常。
发表于 2019-9-24 18:38:29 | 显示全部楼层
basc 发表于 2019-9-23 20:20
Local $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
$oHTTP.Open("GET", "https://www.nsiac.org. ...

这就是你和明明的却别。。。
返回的网站内容第一个字符是问号,判断一下,如果第一个字符是问号,就把第一个字符删掉,然后再写入和比较。
发表于 2019-9-24 18:39:32 | 显示全部楼层
afan 发表于 2019-9-23 21:34
我这XP,获取网页源码失败,没法验证。用 ObjCreate('msxml2.xmlhttp') 方式获取到源码后,后面的比对均 ...

3.3.14.0之后的版本么?
发表于 2019-9-24 18:44:00 | 显示全部楼层
haijie1223 发表于 2019-9-24 18:39
3.3.14.0之后的版本么?

是的 3.3.14.2
发表于 2019-9-24 18:53:29 | 显示全部楼层

那就对了,早就说过3.3.14.0之后的版本com对象有问题,之前刚出14版本的时候,我就遇到过好几次,而且好几个人跟我反馈过这个问题,所以我就一直在用3.3.13.12这个beta的版本,没有再升级。
发表于 2019-9-24 18:57:17 | 显示全部楼层
haijie1223 发表于 2019-9-24 18:53
那就对了,早就说过3.3.14.0之后的版本com对象有问题,之前刚出14版本的时候,我就遇到过好几次,而且好 ...

刚刚测试了3.3.6.1开始的版本,3.3.9.4~3.3.13.x 未出错,但返回空,其它出错。
个人认为主因是Com对象的类名及XP的原因。
发表于 2019-9-24 20:36:24 | 显示全部楼层
afan 发表于 2019-9-24 18:57
刚刚测试了3.3.6.1开始的版本,3.3.9.4~3.3.13.x 未出错,但返回空,其它出错。
个人认为主因是Com对象 ...

对于这种com类的调用,还是用api吧,AU3封装的不是太好。
发表于 2019-9-24 20:42:10 | 显示全部楼层
haijie1223 发表于 2019-9-24 20:36
对于这种com类的调用,还是用api吧,AU3封装的不是太好。

应该是吧 用api自己封装感觉踏实点  我是木有研究  要搞的话就得 一票否决政策  优先兼容性,XP不能用的直接pass掉
发表于 2019-9-24 20:55:14 | 显示全部楼层
afan 发表于 2019-9-24 20:42
应该是吧 用api自己封装感觉踏实点  我是木有研究  要搞的话就得 一票否决政策  优先兼容性,XP不能用的 ...

https://www.autoitscript.com/forum/topic/110379-autoitobject-udf/
这个UDF就是用API创建com对象
发表于 2019-9-24 20:59:07 | 显示全部楼层
haijie1223 发表于 2019-9-24 20:55
https://www.autoitscript.com/forum/topic/110379-autoitobject-udf/
这个UDF就是用API创建com对象

那得你搞才行啊  你是专业分子~   
对象认得我,也得我认得它才行……
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-16 09:33 , Processed in 0.078527 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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