找回密码
 加入
搜索
查看: 2616|回复: 9

[AU3基础] 求助字符串相关。

[复制链接]
发表于 2019-11-8 19:30:34 | 显示全部楼层 |阅读模式
有以下字符串:  {"2017":4.59,"2018":4.77,"2019":5.312,"index":"每股净资产(元)","2013":3.1,"2014":3.481,"2015":3.83,"2016":4.24,"2012":2.73,"2011":2.43,"2010":2.14},{"2017":0.15,"2018":0.16,"2019":0.17,"index":"每股收益(元)","2013":0.14,"2014":0.16,"2015":0.16,"2016":0.15,"2012":0.13,"2011":0.12,"2010":0.1},{"2017":0.48,"2018":0.48,"2019":0.48,"index":"每股资本公积金(元)","2013":0.44,"2014":0.43,"2015":0.48,"2016":0.48,"2012":0.43,"2011":0.43,"2010":0.33}

相实现结果:{"2017":0.15,"2018":0.16,"2019":0.17,"index":"每股收益(元)","2013":0.14,"2014":0.16,"2015":0.16,"2016":0.15,"2012":0.13,"2011":0.12,"2010":0.1}

我的表达式是:(?i)\{.*?每股收益.*\}   
得到的结果却是整个原字符串,问题出在哪,请教各位了。





发表于 2019-11-8 19:37:06 | 显示全部楼层
(?i)\{.*?每股收益.*?\}
后面加个?不就OK了
发表于 2019-11-8 20:16:11 | 显示全部楼层
{[^{]*?每股收益.*?}

发表于 2019-11-8 20:17:28 | 显示全部楼层
正则是从左边开始匹配的,最左边起就符合规则,所以得到的是整个字符串
发表于 2019-11-8 21:35:19 | 显示全部楼层
也可以用JSON来解析
 楼主| 发表于 2019-11-8 21:53:18 | 显示全部楼层
heavenm 发表于 2019-11-8 19:37
(?i)\{.*?每股收益.*?\}
后面加个?不就OK了

这样不得行
 楼主| 发表于 2019-11-8 22:53:24 | 显示全部楼层
zghwelcome 发表于 2019-11-8 20:16
{[^{]*?每股收益.*?}

(?i)\{[^{]*?每股收益.*?\}   可以了,谢谢。
发表于 2019-11-13 10:58:52 | 显示全部楼层
这个是json格式的数据,用json解析更好
发表于 2019-11-13 18:48:14 | 显示全部楼层
#PRE_UseX64=n                                                                        ;使用64位解释器         要  x86 运行      
 #include <file.au3>
#Region  提取json数据 成功
;~ $json = '"x1":{"profile":"xxx","sex":"xxx","age":"xxx","x2":{"profile":"xxx","sex":"xxx","age":"xxx"}}'

;~ $oMSSC = ObjCreate('ScriptControl')
;~ $oMSSC.Language = 'JScript'
;~ $oMSSC.AddCode('var ParseJson = {' & $json & '};')
;~ $a = $oMSSC.Eval('ParseJson.x1.x2.profile')                ;获取x1.x2.profile的值
;~ MsgBox('', '', $a)
#EndRegion 

#Region  提取json数据  2  成功
 
;~  
;~ $json ='{"employees":[' &'{"firstName":"Bill","lastName":"Gates" },' &'{"firstName":"George","lastName":"Bush" },' &'{"firstName":"Thomas","lastName":"Carter" }]}';

;~ $oMSSC = ObjCreate('ScriptControl')
;~ $oMSSC.Language = 'JScript'
;~ $oMSSC.AddCode('var txt = ' & $json& ';');定义json
;~ $oMSSC.AddCode('var obj = eval ("(txt)");') ;分析json
;~ $a = $oMSSC.Eval('obj.employees[2].firstName ')                ;提取值
;~ MsgBox('', '', $a)
#EndRegion 

#Region  运算获取值
;~ $oMSSC = ObjCreate('ScriptControl')
;~ $oMSSC.Language = 'JScript'
;~ $a = $oMSSC.Eval('4 * 1000')                ;运算获取值
;~ MsgBox('', '', $a)
 #EndRegion


#Region 测试  提取json数据
$json =FileRead(@ScriptDir&"\1.txt" ); 数据是 {开头   }结尾
$oMSSC = ObjCreate('ScriptControl')
$oMSSC.Language = 'JScript'
$oMSSC.AddCode('var txt = ' & $json & ';');定义json
$oMSSC.AddCode('var obj = eval ("(txt)");') ;分析json
$a1 = $oMSSC.Eval('obj.result[0].itemList.length')                ;提取值总数 [0]比表示第几段 0开始,。 obj.数据段名字(分层级).length
MsgBox('', '', $a1)
$a = $oMSSC.Eval('obj.result[0].itemList[0].isSellerRec')                ;提取值
MsgBox('', '', $a)
#EndRegion

最近学习的,希望对你有用
 楼主| 发表于 2019-11-18 13:14:33 | 显示全部楼层
guoguo188 发表于 2019-11-13 18:48
最近学习的,希望对你有用

学习下,谢谢。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-16 06:44 , Processed in 0.071997 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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