basc 发表于 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 是读取的变量


afan 发表于 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> 即可

gzh888666 发表于 2019-9-23 18:35:25

他这个好像不能反贪婪,只有这一句的话这样到时行!   Local $ s= StringRegExpReplace($HTMLSource, '您.+>\d+<\/font><\/div>', '')

afan 发表于 2019-9-23 18:46:10

gzh888666 发表于 2019-9-23 18:35
他这个好像不能反贪婪,只有这一句的话这样到时行!   Local $ s= StringRegExpReplace($HTMLSource, '您.+ ...

没问题的,不管是一行还是无数行

basc 发表于 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个网址也是这样的方式,没问题

afan 发表于 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') 方式获取到源码后,后面的比对均正常。

haijie1223 发表于 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. ...

这就是你和明明的却别。。。
返回的网站内容第一个字符是问号,判断一下,如果第一个字符是问号,就把第一个字符删掉,然后再写入和比较。

haijie1223 发表于 2019-9-24 18:39:32

afan 发表于 2019-9-23 21:34
我这XP,获取网页源码失败,没法验证。用 ObjCreate('msxml2.xmlhttp') 方式获取到源码后,后面的比对均 ...

3.3.14.0之后的版本么?

afan 发表于 2019-9-24 18:44:00

haijie1223 发表于 2019-9-24 18:39
3.3.14.0之后的版本么?

是的 3.3.14.2

haijie1223 发表于 2019-9-24 18:53:29

afan 发表于 2019-9-24 18:44
是的 3.3.14.2

那就对了,早就说过3.3.14.0之后的版本com对象有问题,之前刚出14版本的时候,我就遇到过好几次,而且好几个人跟我反馈过这个问题,所以我就一直在用3.3.13.12这个beta的版本,没有再升级。

afan 发表于 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的原因。

haijie1223 发表于 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封装的不是太好。

afan 发表于 2019-9-24 20:42:10

haijie1223 发表于 2019-9-24 20:36
对于这种com类的调用,还是用api吧,AU3封装的不是太好。

应该是吧 用api自己封装感觉踏实点我是木有研究要搞的话就得 一票否决政策优先兼容性,XP不能用的直接pass掉

haijie1223 发表于 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对象

afan 发表于 2019-9-24 20:59:07

haijie1223 发表于 2019-9-24 20:55
https://www.autoitscript.com/forum/topic/110379-autoitobject-udf/
这个UDF就是用API创建com对象

那得你搞才行啊你是专业分子~   
对象认得我,也得我认得它才行……
页: [1] 2
查看完整版本: 正则替换一行字符,自己写的,不知大问题在那里