23070205
发表于 2010-6-6 15:53:11
本帖最后由 23070205 于 2010-6-6 16:01 编辑
再截张图,放到程序中,perfect!
很完美,真是感谢afan超版,感谢热心的水木子老兄。你们辛苦了。向你们学习!
yejier1983
发表于 2010-6-6 22:18:16
不太明白,标记一下
yejier1983
发表于 2010-6-7 19:18:39
本帖最后由 yejier1983 于 2010-6-7 19:30 编辑
还是不太清楚
23070205
发表于 2010-6-7 21:45:26
超版.水木子老兄
你们好,感谢你们在此贴http://www.autoitx.com/thread-15812-1-1.html的帮助。现有一个问题,就是dsptw有个隐藏的功能,在使用后,生成的新文本中,内容如下:
No.Dr Tag FileSystem Volume Act StartPos Sectors MBytes FreeMB
1:1D: Log HPFS/NTFS ide -1 16128 41929587 204731
1:2E: Log HPFS/NTFS ide -2 41945778 11435060755835289
No.Dr Tag FileSystem Volume Act StartPos Sectors MBytes FreeMB
2:1C: Pri HPFS/NTFS win7 Yes 63 21944727 1071528
2:2I: Pri HPFS/NTFS my xp 21944790 43873515 21422223
2:3F: Log HPFS/NTFS SOFT 65818368 205599807100390 3
2:4 Log Hide_HPFS/NTFS 271418238205599807100390
2:5H: Log HPFS/NTFS backup 477018108143813817702213
就是第二硬盘的第四分区隐藏后,程序修改了标示,在原来的前面添加了"Hide_",
这样的话,原来的正则表达式,不能生成这个分区在listview了。希望能再帮助处理下。我看了下正则表达式,感觉简单,还是不会改动。
谢谢了。
afan
发表于 2010-6-7 22:22:23
稍微改一下表达式
;#include <GuiListView.au3>
GUICreate("测试", 560, 200)
$ListView1 = GUICtrlCreateListView('No.|Dr|Tag|FileSystem|Volume|Act|StartPos|Sectors|MBytes|FreeMB', 5, 5, 550, 150)
GUISetState()
_ld()
While 1
If GUIGetMsg() = -3 Then Exit
WEnd
Func _ld()
_GUICtrlListView_DeleteAllItems($ListView1)
Local $str = FileRead('text.txt'), $i, $dt
Local $array = StringRegExp($str, '(\d\:\d+)\h+(\:)?\h+(.+?)\h+(.+?)\h+(.+?)\h+(Yes|\h+?)\h+(\d+)\h+(\d+)\h+(\d+)\h+(\d*)', 3)
If @error Then Return MsgBox(48, 0, '错误')
For $i = 0 To UBound($array) - 10 Step 10
$dt = $array[$i] & '|' & $array[$i + 1] & '|' & $array[$i + 2] & '|' & $array[$i + 3] & '|' & $array[$i + 4] & '|' & $array[$i + 5] & '|' & $array[$i + 6] & '|' & $array[$i + 7] & '|' & $array[$i + 8] & '|' & $array[$i + 9]
GUICtrlCreateListViewItem($dt, $ListView1)
Next
EndFunc ;==>_ld
23070205
发表于 2010-6-7 22:36:28
收到,谢afan超版,回头好好学习正则,这个太重要了。
23070205
发表于 2010-6-7 22:40:32
对比了下,代码发现就是加了一个问号,厉害!
afan
发表于 2010-6-7 22:46:49
回复 22# 23070205
还有一处,最后的+改成了*,呵呵~
水木子
发表于 2010-6-7 22:50:38
本帖最后由 水木子 于 2010-6-7 22:57 编辑
是啊!afan前辈永远是那么厉害,每次总能从他的代码中学到新的知识,十分佩服。
至于 “?” 问号,通常情况下是限定符,往往用于限制表达式的匹配尽可能少匹配,也就是所谓的“懒惰模式”
我对正则也只是略懂,诸多正则问题还是不灵活,班门弄斧还望指教!
afan
发表于 2010-6-7 23:00:40
回复 24# 水木子
又受到木子童鞋的表扬,惭愧…… 还是那句话,我还是一只菜鸟~
p.s, 这里的问号非懒惰,是可有可无的意思哦~ 等同于{0,1}
水木子
发表于 2010-6-7 23:15:58
回复 25# afan
谢谢前辈指教,前辈的意思我明白。
懒惰限定符
[*] 代码/语法 说明
[*] *? 重复任意次,但尽可能少重复
[*] +? 重复1次或更多次,但尽可能少重复
[*] ?? 重复0次或1次,但尽可能少重复
[*] {n,m}? 重复n到m次,但尽可能少重复
[*] {n,}? 重复n次以上,但尽可能少重复
afan
发表于 2010-6-7 23:40:13
回复 26# 水木子
问号前面如果只是字符或组则意为限定符,匹配可有可无~
而懒惰则问号前面需为‘*’、‘+’等限定符~
lynfr8
发表于 2010-6-7 23:48:28
本帖最后由 lynfr8 于 2010-6-8 01:05 编辑
回复水木子
问号前面如果只是字符或组则意为限定符,匹配可有可无~
而懒惰则问号前面需为‘*’、‘+ ...
afan 发表于 2010-6-7 23:40 http://www.autoitx.com/images/common/back.gif
正则表达式是细节决定成败
水木子
发表于 2010-6-7 23:49:05
回复 27# afan
嗯!明白了,并牢记在心,谢谢前辈指点。
23070205
发表于 2010-6-7 23:54:34
啊,大家都还没有睡啊,从此贴感到了正则表达式的重要。同时感谢各位的热心帮助。时间不早了,各位老大该睡觉去。注意身体哦!