You need to enable JavaScript to run this app. Autohotkey RegExMatch()如何从网站返回字符串中提取第二个条目的balance值
优惠活动
大模型
产品
解决方案
定价
更多

Autohotkey RegExMatch()如何从网站返回字符串中提取第二个条目的balance值

Autohotkey 提取嵌套结构中指定balance字段的实现方案

需求说明

从以下嵌套结构字符串中,提取列表第二个条目对应的balance字段值(示例目标值为20.0):

([{'currency': 'KRW', 'balance': '10134.93', 'locked': '0.0', 'avg_krw_buy_price': '0', 'modified': False}, {'currency': 'XRP', 'balance': '20.0', 'locked': '0.0', 'avg_krw_buy_price': '508.66', 'modified': False}], {'group': 'default', 'min': 1799, 'sec': 29})

可直接运行的AHK代码

; 原始接口返回字符串
rawStr := "([{'currency': 'KRW', 'balance': '10134.93', 'locked': '0.0', 'avg_krw_buy_price': '0', 'modified': False}, {'currency': 'XRP', 'balance': '20.0', 'locked': '0.0', 'avg_krw_buy_price': '508.66', 'modified': False}], {'group': 'default', 'min': 1799, 'sec': 29})"

; 精准匹配目标值
RegExMatch(rawStr, "O)\{\s*'currency':\s*'XRP'.*?'balance':\s*'\K[^']+", match)
; 输出结果(可替换为后续业务逻辑)
MsgBox % "提取结果:" . match.Value

通用适配版(不依赖currency字段值)

如果不需要校验第二个条目的币种类型,仅按列表顺序取第二个字典块的balance值,替换正则部分即可:

RegExMatch(rawStr, "O)\{\s*'currency'.*?\}, \{\s*'currency'.*?'balance':\s*'\K[^']+", match)

核心逻辑说明

  • 采用O)匹配模式,直接返回匹配到的结果对象,无需手动遍历捕获组
  • 用非贪婪匹配.*?避免跨字典匹配到错误字段
  • 用\K零宽断言丢弃前置匹配内容,仅捕获balance字段的实际值,无需额外提取捕获组内容
  • 用[^']+匹配字段值,自动截断到单引号结束位置,不会包含多余字符
  • 加入\s*兼容原始字符串中冒号前后的任意空格分隔情况,避免因格式偏移匹配失败

常见踩坑点

  • 若使用贪婪匹配.*,会导致匹配到整个字符串最后一个balance字段的值,不符合需求
  • 若未使用\K,直接写捕获组('balance':\s*'([^']+)'),需要手动取捕获组的对应索引,容易因匹配顺序搞错取值
  • 注意AHK 2.0版本中MsgBox的调用格式需调整为MsgBox("提取结果:" . match.Value),正则部分逻辑完全通用

内容的提问来源于stack exchange,提问作者ggo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.01 17:24:06