holley 发表于 2022-12-5 19:08:00

之前一个正则表达式的优化【已解决】

本帖最后由 holley 于 2022-12-5 19:38 编辑

原贴来自这里:怎么正则提取网页内容【已解决】-已解决问题区-AUTOIT CN - Powered by Autoit中文论坛 (autoitx.com)

今天突然发现,火绒官网增加了一个arm64的下载链接,导致原代码自动获取的是arm64的下载地址
sysdiag-arm64-all-5.0.72.1-2022.12.04.1.exe
目前临时想到的方式是通过StringReplace将arm64去掉
需要怎么优化一下原正则表达式
StringRegExpReplace($sSource, '(?i)^.+All":"(h.+?:)[\\/]+([\w.]+)[\\/]+([^"]+).+$', '\1/\/\2/\3')来实现直接提取到的就是没有arm64的结果?
或者说想求助请教一下,在StringRegExpReplace里面有没有直接减去字符串的示例?我看官方帮助,太简化了- -~
毕竟不是程序员专业的,一般只有用到才会去了解


再次测试了一下,我用
All['"]:['"](h.+?:)[\\/]+([\w.]+)[\\/]+([^"]+).+["']获取的结果是对呢,但拼接上(?i)^.+和.+$就出错了,是不是我还没有真正理解这些符号组合的意思?


我好像拼出来了
^.+urlAll":"(h.+?:)[\\/]+([\w.]+)[\\/]+([^"]+).+$

繁星 发表于 2022-12-5 20:47:25

回头火绒再出个linux版本或者再出个mac版本之类的,或者调整下输出你又得重写了,直接JSON处理,不受影响
#include "Includes\json.au3"

Local $oHTTP = ObjCreate('WinHttp.WinHttpRequest.5.1')
$oHTTP.Open('GET', 'http://www.huorong.cn/versionShow.php', False)
$oHTTP.Send()
Local $Result = BinaryToString($oHTTP.ResponseBody, 4)
Local $json = Json_Decode($Result)
MsgBox(0, '', Json_Get($json, '.urlAll'))

holley 发表于 2022-12-6 09:13:16

繁星 发表于 2022-12-5 20:47
回头火绒再出个linux版本或者再出个mac版本之类的,或者调整下输出你又得重写了,直接JSON处理,不受影响
...

多谢,,我重新改下碼

holley 发表于 2022-12-6 09:27:31

繁星 发表于 2022-12-5 20:47
回头火绒再出个linux版本或者再出个mac版本之类的,或者调整下输出你又得重写了,直接JSON处理,不受影响
...

感谢。已按你的方式实现基础效果,还想请教一下,怎么实现下载到的文件名就是下载地址中显示的文件名?是使用字符串截取还是要怎么修改下参数?

风过无痕 发表于 2022-12-6 10:23:49

holley 发表于 2022-12-6 09:27
感谢。已按你的方式实现基础效果,还想请教一下,怎么实现下载到的文件名就是下载地址中显示的文件名?是 ...

Json_Get($json,'.allName')allname就是程序文件名

bfgxp 发表于 2022-12-6 15:29:11

繁星 发表于 2022-12-5 20:47
回头火绒再出个linux版本或者再出个mac版本之类的,或者调整下输出你又得重写了,直接JSON处理,不受影响
...

高人啊,学习了,我做系统的一直推荐火绒杀毒软件,可是火绒官方把下载地址搞得越来越复杂,这下好了了。
页: [1]
查看完整版本: 之前一个正则表达式的优化【已解决】