找回密码  加入

QQ登录

只需一步,快速开始

AUTOIT CN

搜索
查看: 173|回复: 8

[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 | 显示全部楼层
  1. {[^{]*?每股收益.*?}
复制代码

发表于 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)\{[^{]*?每股收益.*?\}   可以了,谢谢。
发表于 4 天前 | 显示全部楼层
这个是json格式的数据,用json解析更好
发表于 4 天前 | 显示全部楼层

  1. #PRE_UseX64=n                                                                        ;使用64位解释器         要  x86 运行      
  2. #include <file.au3>
  3. #Region  提取json数据 成功
  4. ;~ $json = '"x1":{"profile":"xxx","sex":"xxx","age":"xxx","x2":{"profile":"xxx","sex":"xxx","age":"xxx"}}'

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

  11. #Region  提取json数据  2  成功

  12. ;~  
  13. ;~ $json ='{"employees":[' &'{"firstName":"Bill","lastName":"Gates" },' &'{"firstName":"George","lastName":"Bush" },' &'{"firstName":"Thomas","lastName":"Carter" }]}';

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

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


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


最近学习的,希望对你有用
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2019-11-17 10:12 , Processed in 0.062500 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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