qq724174 发表于 2012-1-8 07:57:16

求正则表达式去INI指定关键词的值,非IniRead[已解决]

本帖最后由 qq724174 于 2012-1-8 15:11 编辑

求正则表达式取INI某个关键字的值
INI内容如下:
pathfrmbin=ConfigMgr.dll
md5=2EACDD6F552278CADAE348A2EA669114
filedate=2012-01-06 15:58:17
forcedpath=


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


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


pathfrmbin=DNAService\SoftUpdate.exe
md5=B20E7C54FBCED5F5EFD9ABF0C262896D
filedate=2012-01-06 18:34:53
forcedpath=需要取出下的filedate的值,
功能和IniRead($sFile,'P2PConfig.xml','filedate','')一样,但是数据是保存在变量当中的 无法用IniRead获取,请问各位用什么正则可以直接取出吗?

user3000 发表于 2012-1-8 08:13:52

求正则表达式取INI某个关键字的值
INI内容如下:需要取出下的filedate的值,
功能和一样,但是数据是保存 ...
qq724174 发表于 2012-1-8 07:57 http://www.autoitx.com/images/common/back.gif

如果有心学点正则请参考此帖: http://www.autoitx.com/thread-29424-1-1.html

#include <array.au3>
$txt = FileRead('d:\file.au3')
$str = StringRegExp($txt, '(?<=^|[\r\n])(?:\)(?s).+?filedate=([^\r\n]+).+', 3)
_ArrayDisplay($str)

qq724174 发表于 2012-1-8 08:45:40

本帖最后由 qq724174 于 2012-1-8 08:47 编辑

回复 2# user3000


    搞定,谢谢了\(?s).+?filedate=([^\r\n]+)

Ycxw2008 发表于 2012-1-8 09:01:49

本帖最后由 Ycxw2008 于 2012-1-8 09:04 编辑

回答慢了,清除文字

user3000 发表于 2012-1-8 10:45:31

回复user3000


    搞定,谢谢了
qq724174 发表于 2012-1-8 08:45 http://www.autoitx.com/images/common/back.gif


    搞定了就把帖子标题添加 [已解决] 这个三个字进去!
在标题前头或后尾加都可以!

zxxputian2 发表于 2012-1-8 14:39:06

多谢楼主共享

syhw2222 发表于 2012-1-8 23:08:09

认真学习一下!

qq724174 发表于 2012-1-12 17:53:39

回复 2# user3000
pathfrmbin=ConfigMgr.dll
md5=2EACDD6F552278CADAE348A2EA669114
filedate=2012-01-06 15:58:17
forcedpath=


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


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


pathfrmbin=DNAService\SoftUpdate.exe
md5=B20E7C54FBCED5F5EFD9ABF0C262896D
filedate=2012-01-06 18:34:53
forcedpath=Func _IniRead($sText, $section, $Key, $Default)
        ;(?<=^|[\r\n])(?:\)(?s).+?md5=([^\r\n]+).+
        ;\(?s).+?filedate=([^\r\n]+)
        Local $iKey = StringRegExp($sText, '\[' & $section & '\](?s).+?' & $Key & '=([^\r\n]+)', 3)
        If @error Then Return $Default
       
        Return $iKey
EndFunc   ;==>_IniRead_IniRead($sFile_List, p2pserver.exe', 'md5', '')这样读到的是里的md5,请帮我看看

user3000 发表于 2012-1-12 19:03:04

回复user3000 这样读到的是里的md5,请帮我看看
qq724174 发表于 2012-1-12 17:53 http://www.autoitx.com/images/common/back.gif

Local $iKey = StringRegExp($sText, '\[' & $section & '\](?s).+?' & $Key & '=([^\r\n]+)filedate, 3)

这样就可以了... 把它限制在一个字段内!
页: [1]
查看完整版本: 求正则表达式去INI指定关键词的值,非IniRead[已解决]