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

啊,大家都还没有睡啊,从此贴感到了正则表达式的重要。同时感谢各位的热心帮助。时间不早了,各位老大该睡觉去。注意身体哦!
页: 1 [2] 3
查看完整版本: 求正则表达式,dsptw生成的文本到listview【已解决】