找回密码
 加入
搜索
查看: 2027|回复: 5

[AU3基础] 问个正则换行提取【已解决】感谢A版!

[复制链接]
发表于 2020-4-3 19:08:53 | 显示全部楼层 |阅读模式
本帖最后由 fybhwsx 于 2020-4-3 19:49 编辑

用A版的Au3.REHelper_1.5.1,只会简单的单行提取一些东西,感谢A版的工具。。

我想要提取:
DeviceID         : \\.\PHYSICALDRIVE2  这行末尾的(数字)
Model            : INTEL SSDSA2M080G2GC 这行Model            : (需要的字符)
SerialNumber     : CVPO011303WM080BGN 这行 SerialNumber     :(需要的字符)
……


整理格式:中间加两个空格
2  INTEL SSDSA2M080G2GC  CVPO011303WM080BGN
……

### 友情提示:本脚本由 Au3.REHelper 于 2020/04/03 18:02 自动生成,不保证其正确性,请自行测试 ###
#include <Array.au3>
Local $sSource = _
                @CRLF & _
                '__GENUS          : 2' & @CRLF & _
                '__CLASS          : Win32_DiskDrive' & @CRLF & _
                '__SUPERCLASS     :' & @CRLF & _
                '__DYNASTY        :' & @CRLF & _
                '__RELPATH        : Win32_DiskDrive.DeviceID="\\\\.\\PHYSICALDRIVE1"' & @CRLF & _
                '__PROPERTY_COUNT : 3' & @CRLF & _
                '__DERIVATION     : {}' & @CRLF & _
                '__SERVER         :' & @CRLF & _
                '__NAMESPACE      :' & @CRLF & _
                '__PATH           :' & @CRLF & _
                'DeviceID         : \\.\PHYSICALDRIVE1' & @CRLF & _
                'Model            : INTEL SSDSA2CW080G3' & @CRLF & _
                'SerialNumber     : CVPR149606A0080BGN' & @CRLF & _
                'PSComputerName   :' & @CRLF & @CRLF & _
                '__GENUS          : 2' & @CRLF & _
                '__CLASS          : Win32_DiskDrive' & @CRLF & _
                '__SUPERCLASS     :' & @CRLF & _
                '__DYNASTY        :' & @CRLF & _
                '__RELPATH        : Win32_DiskDrive.DeviceID="\\\\.\\PHYSICALDRIVE0"' & @CRLF & _
                '__PROPERTY_COUNT : 3' & @CRLF & _
                '__DERIVATION     : {}' & @CRLF & _
                '__SERVER         :' & @CRLF & _
                '__NAMESPACE      :' & @CRLF & _
                '__PATH           :' & @CRLF & _
                'DeviceID         : \\.\PHYSICALDRIVE0' & @CRLF & _
                'Model            : Romex RAMDISK SCSI Device' & @CRLF & _
                'SerialNumber     : SN-FANCYRD20082011' & @CRLF & _
                'PSComputerName   :' & @CRLF & @CRLF & _
                '__GENUS          : 2' & @CRLF & _
                '__CLASS          : Win32_DiskDrive' & @CRLF & _
                '__SUPERCLASS     :' & @CRLF & _
                '__DYNASTY        :' & @CRLF & _
                '__RELPATH        : Win32_DiskDrive.DeviceID="\\\\.\\PHYSICALDRIVE2"' & @CRLF & _
                '__PROPERTY_COUNT : 3' & @CRLF & _
                '__DERIVATION     : {}' & @CRLF & _
                '__SERVER         :' & @CRLF & _
                '__NAMESPACE      :' & @CRLF & _
                '__PATH           :' & @CRLF & _
                'DeviceID         : \\.\PHYSICALDRIVE2' & @CRLF & _
                'Model            : INTEL SSDSA2M080G2GC' & @CRLF & _
                'SerialNumber     : CVPO011303WM080BGN' & @CRLF & _
                'PSComputerName   :'
;~MsgBox(0, '源字符串', $sSource)
Local $aSRE = StringRegExp($sSource, 'DeviceID .*(\d+)', 3)
If Not @Error Then MsgBox(0, '匹配数量: ' & UBound($aSRE), '其中[0]元素为: ' & $aSRE[0])
_ArrayDisplay($aSRE, UBound($aSRE))



发表于 2020-4-3 19:18:10 | 显示全部楼层
Local $sSource = 你的数据
Local $sSRERe = StringRegExpReplace($sSource, '(?si)^.+?\vDeviceID\h*:\V+?(\d*)\v+Model\h+:\h*(\V*)\v+SerialNumber\h*:\h*(\V*)\v+.+', '\1  \2  \3')
MsgBox(0, '替换结果', $sSRERe)
 楼主| 发表于 2020-4-3 19:36:37 | 显示全部楼层
感谢A版,是我没说清楚,我想要的应该有3组数据,提取整理格式如下,麻烦再看下。。
1  INTEL SSDSA2CW080G3  CVPR149606A0080BGN
0  Romex RAMDISK SCSI Device  SN-FANCYRD20082011
2  INTEL SSDSA2M080G2GC  CVPO011303WM080BGN
发表于 2020-4-3 19:43:44 | 显示全部楼层
fybhwsx 发表于 2020-4-3 19:36
感谢A版,是我没说清楚,我想要的应该有3组数据,提取整理格式如下,麻烦再看下。。
1  INTEL SSDSA2CW080 ...

那就用匹配模式,不管多少组,获取后以3步进取数组连接即可
Local $aSRE = StringRegExp($sSource, '(?i)DeviceID\h*:\V+?(\d*)\v+Model\h+:\h*(\V*)\v+SerialNumber\h*:\h*(\V*)\v+', 3)
_ArrayDisplay($aSRE, UBound($aSRE))
 楼主| 发表于 2020-4-3 19:47:24 | 显示全部楼层
afan 发表于 2020-4-3 19:43
那就用匹配模式,不管多少组,获取后以3步进取数组连接即可

嗯嗯,谢谢!
发表于 2020-4-5 12:45:51 | 显示全部楼层

这个是哪个命令行程序的输出
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-16 08:46 , Processed in 0.072284 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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