qddoit 发表于 2009-6-8 16:20:27

如何自动查找并读取txt中特定的值

本帖最后由 qddoit 于 2009-6-8 19:16 编辑

<?xml version="1.0" encoding="utf-8" ?>
<gameData>
    <Install>
      <game000265 Status="4" TypeId="004" version="1" GameStartFile="shinanrenshang100ceng.dat" RealGameName="是男人上100层" InstallPath="${TAG_INSTALL_PATH}" AutoUpdate="1" RemindComment="1" />
    </Install>
    <GameCmmt />
</gameData>

txt内容如上,如何取出GameStartFile="shinanrenshang100ceng.dat"中
shinanrenshang100ceng.dat这个值

每个txt的格式相同 都有GameStartFile=“变量”

lynfr8 发表于 2009-6-8 16:51:53

本帖最后由 lynfr8 于 2009-6-8 18:02 编辑

一直都怕正则,看着容易头晕
不过正则太强大了,(尤其膜拜文白兄!)
反正自己正在艰苦学着正则,就当时练手之作吧
此例子正则表达式不是太复杂(也可能我头脑想的简单了,呵呵)
stringRegExp($a,'GameStartFile="(.*)"\sReal',3)就能解决了
注意:本表达式是通过GameStartFile和Real特征字符前后包抄来匹配的
因为看不到你其他文本,就只能针对此贴写表达式了
自己当灵活处理
当然还有更厉害的能达到同样效果的表达式
请再赐教

效果图:
#include <Array.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiComboBoxEx.au3>

$Form1 = GUICreate("正则判断", 633, 254, 192, 124)
$Edit1 = GUICtrlCreateEdit("", 8, 8, 617, 201)
GUICtrlSetData(-1, "Edit1")
$Button1 = GUICtrlCreateButton("运行正则", 24, 216, 97, 25, 0)
$Input = GUICtrlCreateInput("", 160, 216, 257, 21)
GUISetState(@SW_SHOW)

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$a=GUICtrlRead($Edit1)
$b = stringRegExp($a,'GameStartFile="(.*)"\sReal',3)
for $i = 0 to UBound($b) - 1
GUICtrlSetData ($input,$b[$i])
Next
EndSwitch
WEnd

ddx13 发表于 2009-6-8 16:53:59

哎,楼上都写出答安了,我的麻烦方法可以不要了。

lynfr8 发表于 2009-6-8 16:57:13

如果同篇文章很多GameStartFile=“变量”,就将input改为combo下拉列表显示即可

kn007 发表于 2009-6-8 17:56:15

学习了

正则离我还远着呢

qddoit 发表于 2009-6-8 19:09:24

:face (23):

先谢谢了~~ 马上去试试。。。

menfan1 发表于 2009-6-10 08:36:32

编程离不开正则。。

qiziyun7410 发表于 2010-8-4 04:37:16

远得很!!!!!!!!!!!!

lsqyx528 发表于 2010-8-10 10:23:33

好帖,一定要定一下!

turboking 发表于 2011-12-22 14:54:21

还是不想用正则
页: [1]
查看完整版本: 如何自动查找并读取txt中特定的值