找回密码
 加入
搜索
查看: 2060|回复: 9

[AU3基础] 求个正则提取信息 - 已解决

[复制链接]
发表于 2021-5-11 21:30:20 | 显示全部楼层 |阅读模式
本帖最后由 rally 于 2021-5-11 22:08 编辑

      Disk ( 1:)   0        11.841 Billion  PASS   0        No errorstxt文本 ,想提取:【Disk ( 1:) ,0 ,11.841 Billion,PASS,0,No errors]  ,求个正则,谢谢
发表于 2021-5-11 21:41:02 | 显示全部楼层
范本太少,只能猜~
Highlight code by AuREHelper
(?mi)^(Disk.+\))\h+(\d+)\h+([\d.](?#)+\h+\w+)\h+(\w+)\h+(\d+)\h+(\V+)


 楼主| 发表于 2021-5-11 21:48:32 | 显示全部楼层
afan 发表于 2021-5-11 21:41
范本太少,只能猜~

看到这些个符号很懵,下载了超版的正则参考看的满头大汗也没弄出来  https://www.autoitx.com/forum.ph ... hlight=%D5%FD%D4%F2 。afan大大帮指点一下。这串“Disk ( 1:)   0        11.841 Billion  PASS   0        No errors” ,如何转换为这个一维数组?【Disk ( 1:) ,0 ,11.841 Billion,PASS,0,No errors]
发表于 2021-5-11 21:53:49 | 显示全部楼层
rally 发表于 2021-5-11 21:48
看到这些个符号很懵,下载了超版的正则参考看的满头大汗也没弄出来  https://www.autoitx.com/forum.php? ...

上面的表达式结果不就是一维数组?
 楼主| 发表于 2021-5-11 21:57:19 | 显示全部楼层
本帖最后由 rally 于 2021-5-11 21:59 编辑
afan 发表于 2021-5-11 21:53
上面的表达式结果不就是一维数组?

(?mi)^(Disk.+\))\h+(\d+)\h+([\d.](?#)+\h+\w+)\h+(\w+)\h+(\d+)\h+(\V+)  ,这个正则是配哪个函数运行的啊?用StringRegExpReplace() 没弄出来
发表于 2021-5-11 21:59:26 | 显示全部楼层
rally 发表于 2021-5-11 21:57
(?mi)^(Disk.+\))\h+(\d+)\h+([\d.](?#)+\h+\w+)\h+(\w+)\h+(\d+)\h+(\V+)  ,这个正则是配哪个函数运行的 ...

#include <Array.au3>
Local $sSource = 'Disk ( 1:)   0        11.841 Billion  PASS   0        No errors'
;~ MsgBox(0, '源字符串', $sSource)
Local $aSRE = StringRegExp($sSource, '(?mi)^(Disk.+\))\h+(\d+)\h+([\d.]+\h+\w+)\h+(\w+)\h+(\d+)\h+(\V+)', 3)
If Not @Error Then MsgBox(0, '匹配数量: ' & UBound($aSRE), '其中[0]元素为: ' & $aSRE[0])
_ArrayDisplay($aSRE, UBound($aSRE))
 楼主| 发表于 2021-5-11 22:08:20 | 显示全部楼层

afan 大大,太感谢了,怎么没开窍。。。
 楼主| 发表于 2021-5-11 22:28:19 | 显示全部楼层
rally 发表于 2021-5-11 22:08
afan 大大,太感谢了,怎么没开窍。。。

afan大大帮看一下,Local $sSource = '     Disk ( 1:)   111223        11.841 Billion  PASS   344555        No errors'   ,Disk(1:)前面还有空格,这个正则该怎么改啊?

#include <Array.au3>
Local $sSource = '         Disk ( 1:)   111223        11.841 Billion  PASS   344555        No errors'
MsgBox(0, '源字符串', $sSource)
Local $aSRE = StringRegExp($sSource, '(?mi)^(Disk.+\))\h+(\d+)\h+([\d.]+\h+\w+)\h+(\w+)\h+(\d+)\h+(\V+)', 3)
If Not @Error Then MsgBox(0, '匹配数量: ' & UBound($aSRE), '其中[0]元素为: ' & $aSRE[0])
_ArrayDisplay($aSRE, UBound($aSRE))
发表于 2021-5-11 22:43:22 | 显示全部楼层
Local $aSRE = StringRegExp($sSource, '(?mi)^\h*(Disk.+\))\h+(\d+)\h+([\d.]+\h+\w+)\h+(\w+)\h+(\d+)\h+(\V+)', 3)
 楼主| 发表于 2021-5-12 08:40:07 | 显示全部楼层
非常感谢afan大大,也要努力学习,尽量少伸手,多思考
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-17 04:01 , Processed in 0.076861 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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