又不会了,还是正则。[已解决]
本帖最后由 sunkiss 于 2012-2-15 13:14 编辑我用gdisk32生成了一个文件,我想提取一部分,一直没成功!
$GDARRY = StringRegExp(FileRead($gdisk32T), 'h*(\d)........(.).............................\h+(\V\d*\.\d)\h+([^CQUTOOLS^USB^DL07^ADATA^Flash^Kingston].*)', 3)
这样不行。
我想要DiskPartitions MbytesModel这四列的数据,但是又不想要其中U盘的数据,现在看到的最后一列是U盘的信息。求教!
就是$GDARRY=1,$GDARRY=4,$GDARRY=476940.0,$GDARRY=ST3500418AS,$GDARRY=2,$GDARRY=5,$GDARRY=476940.0,$GDARRY=ST9500325AS,$GDARRY=3,$GDARRY=7,$GDARRY=476940.0,$GDARRY=ST950032 5AS 0001
如果有移动硬盘就接着再$GDARRY=XXX,就是不要U盘的信息。现在$GDARRY=4,就是我的U盘了。因为我有3个U盘,生成的息如下面的三个。每次接U盘生成的信息都变。不知道怎么获得我想要的数据。
我本来想只要去掉最后一行就行了,但是,有时我接移动硬盘后,最后一行不是U盘。但是我的U盘型号是不变的,我想能不能用型号排除。一直没成功。
DiskPartitionsCylindersHeadsSectorsMbytesModel
1 4 60801 255 63476940.0ST3500418AS
2 5 60801 255 63476940.0ST9500325AS
3 7 60801 255 63476940.0ST950032 5AS 0001
4 1 1906 255 63 14952.0CQUTOOLS DL07
DiskPartitionsCylindersHeadsSectorsMbytesModel
1 4 60801 255 63476940.0ST3500418AS
2 5 60801 255 63476940.0ST9500325AS
3 7 60801 255 63476940.0ST950032 5AS 0001
4 1 1906 255 63 14952.0ADATA USB Flash
DiskPartitionsCylindersHeadsSectorsMbytesModel
1 4 60801 255 63476940.0ST3500418AS
2 5 60801 255 63476940.0ST9500325AS
3 7 60801 255 63476940.0ST950032 5AS 0001
4 1 1906 255 63 14952.0Kingston DT102 我用gdisk32生成了一个文件,我想提取一部分,一直没成功!
下面的4开头的是我的U盘,三个不一样!我想排除 ...
sunkiss 发表于 2012-2-14 12:46 http://www.autoitx.com/images/common/back.gif
描述得很乱, 我是看不明白你到底要做什么!
好好考虑下, 重新组织下语言吧! 回复 2# user3000
再帮忙看看吧!能看懂了吧!就是提取除U盘在内的别的我想要的信息,因为以前我用删除最后一行的办法能行来着,现在有时接移动硬盘,移动硬盘会在最后一行,所以不行了。能懂吧 Local $Str = _
'DiskPartitionsCylindersHeadsSectorsMbytesModel' & @CRLF & _
'1 4 60801 255 63476940.0ST3500418AS' & @CRLF & _
'2 5 60801 255 63476940.0ST9500325AS' & @CRLF & _
'3 7 60801 255 63476940.0ST950032 5AS 0001' & @CRLF & _
'4 1 1906 255 63 14952.0CQUTOOLS DL07' & @CRLF & @CRLF & _
'DiskPartitionsCylindersHeadsSectorsMbytesModel' & @CRLF & _
'1 4 60801 255 63476940.0ST3500418AS' & @CRLF & _
'2 5 60801 255 63476940.0ST9500325AS' & @CRLF & _
'3 7 60801 255 63476940.0ST950032 5AS 0001' & @CRLF & _
'4 1 1906 255 63 14952.0ADATA USB Flash' & @CRLF & @CRLF & _
'DiskPartitionsCylindersHeadsSectorsMbytesModel' & @CRLF & _
'1 4 60801 255 63476940.0ST3500418AS' & @CRLF & _
'2 5 60801 255 63476940.0ST9500325AS' & @CRLF & _
'3 7 60801 255 63476940.0ST950032 5AS 0001' & @CRLF & _
'4 1 1906 255 63 14952.0Kingston DT102'
MsgBox(0, '原字符串', $Str)
Local $Test = StringRegExpReplace($str, '.*(?:CQUTOOLS|Flash|Kingston).*\n?', '')
MsgBox(0, '替换结果', $Test)
afan就是厉害,每次都是afan帮我忙!太感谢了,内牛满面了!这就去试试啊! #include <Array.au3>
Local $Str1 = _
'DiskPartitionsCylindersHeadsSectorsMbytesModel' & @CRLF & _
'1 4 60801 255 63476940.0ST3500418AS' & @CRLF & _
'2 5 60801 255 63476940.0ST9500325AS' & @CRLF & _
'3 7 60801 255 63476940.0ST950032 5AS 0001' & @CRLF & _
'4 1 1906 255 63 14952.0CQUTOOLS DL07' & @CRLF & @CRLF
Local $Str2 = _
'DiskPartitionsCylindersHeadsSectorsMbytesModel' & @CRLF & _
'1 4 60801 255 63476940.0ST3500418AS' & @CRLF & _
'2 5 60801 255 63476940.0ST9500325AS' & @CRLF & _
'3 7 60801 255 63476940.0ST950032 5AS 0001' & @CRLF & _
'4 1 1906 255 63 14952.0ADATA USB Flash' & @CRLF & @CRLF
Local $Str3 = _
'DiskPartitionsCylindersHeadsSectorsMbytesModel' & @CRLF & _
'1 4 60801 255 63476940.0ST3500418AS' & @CRLF & _
'2 5 60801 255 63476940.0ST9500325AS' & @CRLF & _
'3 7 60801 255 63476940.0ST950032 5AS 0001' & @CRLF & _
'4 1 1906 255 63 14952.0Kingston DT102'
Local $Str = $Str1
;Local $Str = $Str2
;Local $Str = $Str3
MsgBox(0, '原字符串', $Str)
Local $str_Re = StringRegExpReplace($str, '.*(?:CQUTOOLS|Flash|Kingston).*\n?', '')
MsgBox(0, '替换结果', $str_Re)
Local $aSR = StringRegExp($str_Re, '\h+(\d)\h+(\d)(?:\h+\d+){3}\h+([\d.]+)\h+(\V+)', 3)
_ArrayDisplay($aSR, UBound($aSR)) 回复user3000
再帮忙看看吧!能看懂了吧!就是提取除U盘在内的别的我想要的信息,因为以前我用 ...
sunkiss 发表于 2012-2-14 13:16 http://www.autoitx.com/images/common/back.gif
看明白了, 但还是有点费力...
建议你还直接粘出文件内容, 内容过多可上传文件, 然后标出想要结果, 这样更一目了然.
别人也有了测试的基础, 这样才好帮忙吧?
话说回来, 既然想排查U盘那行数据, 我看到固定硬盘的 Disk 肯定是 123, 还有 Partitions 也是 457 (都是不止一个分区, 而你的U盘都是一个分区), 所以可以用这两项来作进一步排除.
提取 Disk 用 '' 代替 '\d', 提取 Partitions 时可类似用''(2到9个分区, 汗)! 当然按你的想法也行,但要改下:
([^CQUTOOLS^USB^DL07^ADATA^Flash^Kingston].*)
改为 ([^AaCcKk].*) 其实不用先删除,可以直接提取Local $Test = StringRegExp($str, '\h+(\d)\h+(\d)(?:\h+\d+){3}\h+([\d.]+)\h+(\H(?:(?!QUTOOLS|Flash|ingston).)+)(?=\r|$)', 3)
_ArrayDisplay($Test, UBound($Test))
回复 4# afan
太感谢了,成功了!哈哈,一直StringRegExp就没成功,哈哈,StringRegExpReplace后成功了!
Local $Str = FileRead(FileOpen( "K:\SYS\au3\失败\gd.txt"))
MsgBox(0, '原字符串', $Str)
Local $Test = StringRegExpReplace($str, '.*(?:CQUTOOLS|Flash|Kingston).*\n?', '')
MsgBox(0, '替换结果', $Test) 回复 9# afan
高手就是高手,又学习了!哈哈,一直没看明白帮助里的,这下直接会了!
页:
[1]