找回密码
 加入
搜索
楼主: 23070205

[效率算法] 求正则表达式,dsptw生成的文本到listview【已解决】

 火.. [复制链接]
 楼主| 发表于 2010-6-6 15:53:11 | 显示全部楼层
本帖最后由 23070205 于 2010-6-6 16:01 编辑




再截张图,放到程序中,perfect!
很完美,真是感谢afan超版,感谢热心的水木子老兄。你们辛苦了。向你们学习!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2010-6-6 22:18:16 | 显示全部楼层
不太明白,标记一下
发表于 2010-6-7 19:18:39 | 显示全部楼层
本帖最后由 yejier1983 于 2010-6-7 19:30 编辑

还是不太清楚
 楼主| 发表于 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:1  D: Log HPFS/NTFS      ide -1          16128      41929587   20473  1
1:2  E: Log HPFS/NTFS      ide -2          41945778   114350607  55835  289


No.  Dr Tag FileSystem     Volume      Act StartPos   Sectors    MBytes FreeMB
2:1  C: Pri HPFS/NTFS      win7        Yes 63         21944727   10715  28
2:2  I: Pri HPFS/NTFS      my xp           21944790   43873515   21422  223
2:3  F: Log HPFS/NTFS      SOFT            65818368   205599807  100390 3
2:4     Log Hide_HPFS/NTFS                 271418238  205599807  100390
2:5  H: Log HPFS/NTFS      backup          477018108  143813817  70221  3


就是第二硬盘的第四分区隐藏后,程序修改了标示,在原来的前面添加了"Hide_",
这样的话,原来的正则表达式,不能生成这个分区在listview了。希望能再帮助处理下。我看了下正则表达式,感觉简单,还是不会改动。
谢谢了。
发表于 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+([C-Z]\:)?\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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 2金钱 +5 贡献 +10 收起 理由
lynfr8 + 5 学习了!
23070205 + 10 您很热心,谢谢!

查看全部评分

 楼主| 发表于 2010-6-7 22:36:28 | 显示全部楼层
收到,谢afan超版,回头好好学习正则,这个太重要了。
 楼主| 发表于 2010-6-7 22:40:32 | 显示全部楼层
对比了下,代码发现就是加了一个问号,厉害!
发表于 2010-6-7 22:46:49 | 显示全部楼层
回复 22# 23070205


    还有一处,最后的+改成了*,呵呵~
发表于 2010-6-7 22:50:38 | 显示全部楼层
本帖最后由 水木子 于 2010-6-7 22:57 编辑

是啊!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次以上,但尽可能少重复
发表于 2010-6-7 23:40:13 | 显示全部楼层
回复 26# 水木子

问号前面如果只是字符或组则意为限定符,匹配可有可无~
而懒惰则问号前面需为‘*’、‘+’等限定符~
发表于 2010-6-7 23:48:28 | 显示全部楼层
本帖最后由 lynfr8 于 2010-6-8 01:05 编辑
回复  水木子

问号前面如果只是字符或组则意为限定符,匹配可有可无~
而懒惰则问号前面需为‘*’、‘+ ...
afan 发表于 2010-6-7 23:40



    正则表达式是细节决定成败
发表于 2010-6-7 23:49:05 | 显示全部楼层
回复 27# afan

嗯!明白了,并牢记在心,谢谢前辈指点。
 楼主| 发表于 2010-6-7 23:54:34 | 显示全部楼层
啊,大家都还没有睡啊,从此贴感到了正则表达式的重要。同时感谢各位的热心帮助。时间不早了,各位老大该睡觉去。注意身体哦!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-10 18:58 , Processed in 0.075098 second(s), 15 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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