rally 发表于 2021-5-11 21:30:20

求个正则提取信息 - 已解决

本帖最后由 rally 于 2021-5-11 22:08 编辑

      Disk ( 1:)   0      11.841 BillionPASS   0      No errorstxt文本 ,想提取:【Disk ( 1:) ,0 ,11.841 Billion,PASS,0,No errors],求个正则,谢谢

afan 发表于 2021-5-11 21:41:02

范本太少,只能猜~

Highlight code by AuREHelper
(?mi)^(Disk.+\))\h+(\d+)\h+([\d.](?#)+\h+\w+)\h+(\w+)\h+(\d+)\h+(\V+)


rally 发表于 2021-5-11 21:48:32

afan 发表于 2021-5-11 21:41
范本太少,只能猜~

看到这些个符号很懵,下载了超版的正则参考看的满头大汗也没弄出来https://www.autoitx.com/forum.php?mod=viewthread&tid=51810&highlight=%D5%FD%D4%F2 。afan大大帮指点一下。这串“Disk ( 1:)   0      11.841 BillionPASS   0      No errors” ,如何转换为这个一维数组?【Disk ( 1:) ,0 ,11.841 Billion,PASS,0,No errors]

afan 发表于 2021-5-11 21:53:49

rally 发表于 2021-5-11 21:48
看到这些个符号很懵,下载了超版的正则参考看的满头大汗也没弄出来https://www.autoitx.com/forum.php? ...

上面的表达式结果不就是一维数组?

rally 发表于 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() 没弄出来

afan 发表于 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 BillionPASS   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), '其中元素为: ' & $aSRE)
_ArrayDisplay($aSRE, UBound($aSRE))

rally 发表于 2021-5-11 22:08:20

afan 发表于 2021-5-11 21:59


afan 大大,太感谢了,怎么没开窍。。。

rally 发表于 2021-5-11 22:28:19

rally 发表于 2021-5-11 22:08
afan 大大,太感谢了,怎么没开窍。。。

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

#include <Array.au3>
Local $sSource = '         Disk ( 1:)   111223      11.841 BillionPASS   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), '其中元素为: ' & $aSRE)
_ArrayDisplay($aSRE, UBound($aSRE))

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

rally 发表于 2021-5-12 08:40:07

非常感谢afan大大,也要努力学习,尽量少伸手,多思考{:1_195:}
页: [1]
查看完整版本: 求个正则提取信息 - 已解决