找回密码
 加入
搜索
查看: 1485|回复: 3

[AU3基础] 【已解决】正则取INI值,遇到目标值为空,返回的是下个[]里的值,求解

[复制链接]
发表于 2012-1-12 17:59:23 | 显示全部楼层 |阅读模式
本帖最后由 qq724174 于 2012-1-12 20:08 编辑

$sFile_List 变量类容为:
[ConfigMgr.dll]
pathfrmbin=ConfigMgr.dll
md5=2EACDD6F552278CADAE348A2EA669114
filedate=2012-01-06 15:58:17
forcedpath=

[P2PConfig.xml]
pathfrmbin=DNAService\P2PConfig.xml
md5=
filedate=2012-01-05 23:49:53
forcedpath=

[p2pserver.exe]
pathfrmbin=DNAService\p2pserver.exe
md5=
filedate=2011-08-09 09:50:41
forcedpath=

[SoftUpdate.exe]
pathfrmbin=DNAService\SoftUpdate.exe
md5=B20E7C54FBCED5F5EFD9ABF0C262896D
filedate=2012-01-06 18:34:53
forcedpath=
Func _IniRead($sText, $section, $Key, $Default)
        ;(?<=^|[\r\n])(?:\[SoftUpdate\.exe\])(?s).+?md5=([^\r\n]+).+
        ;\[P2PConfig.xml\](?s).+?filedate=([^\r\n]+)
        Local $iKey = StringRegExp($sText, '\[' & $section & '\](?s).+?' & $Key & '=([^\r\n]+)', 3)
        If @error Then Return $Default
        
        Return $iKey[0]
EndFunc   ;==>_IniRead
_IniRead($sFile_List, p2pserver.exe', 'md5', '')
这样读到的是[SoftUpdate.exe]里的md5,请帮我看看
发表于 2012-1-12 19:07:23 | 显示全部楼层
本帖最后由 user3000 于 2012-1-12 19:26 编辑

刚刚发的有误, 呵! 还是3楼A大的简洁.
主要 是 + 必须匹配至少一个字符, 而 * 号是能匹配可有可无的字符, 包括空字符!
Local $iKey = StringRegExp($sText, '\[' & $section & '\](?s).+?' & $Key & '=(.*?)[\r\n]*?filedate', 3)
发表于 2012-1-12 19:19:01 | 显示全部楼层
这么工整的字段...
第4行最后一个“+”改为“*”
 楼主| 发表于 2012-1-12 20:07:47 | 显示全部楼层
嗯 ,谢谢两位大哥指点。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-1 01:25 , Processed in 0.076939 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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