You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则表达式提取JSON对象中cards数组的所有id值

提取JSON中cards数组的所有id值

问题分析

你用的正则"cards":\[\{.*?"id":"([^"]+)"只能匹配第一个id,核心原因是:

  • 默认单次匹配模式,未开启全局匹配
  • .*?是非贪婪匹配,匹配到第一个id后就停止,无法覆盖后续的卡片项

解决方案

优先推荐:用JSON解析工具(最可靠)

正则处理结构化JSON极易因格式变化(比如换行、空格、键顺序调整)失效,直接用对应语言的JSON解析库才是标准做法:

JavaScript示例
// 假设JSON已解析为对象
const data = {
  "id": "57cea8c",
  "boardPlugins": [],
  "pluginData": [],
  "cards": [
    {"id": "57cea8c", "attachments": [], "pluginData": []},
    {"id": "57cea8c", "attachments": [], "pluginData": []},
    {"id": "57cea8c", "attachments": [], "pluginData": []},
    {"id": "57cea8c", "attachments": [], "pluginData": []}
  ]
};
// 提取所有卡片id
const cardIds = data.cards.map(card => card.id);
console.log(cardIds); // 输出 ["57cea8c", "57cea8c", "57cea8c", "57cea8c"]
Python示例
import json

# 你的JSON字符串
json_str = '''
{
  "id": "57cea8c",
  "boardPlugins": [],
  "pluginData": [],
  "cards": [
    {"id": "57cea8c", "attachments": [], "pluginData": []},
    {"id": "57cea8c", "attachments": [], "pluginData": []},
    {"id": "57cea8c", "attachments": [], "pluginData": []},
    {"id": "57cea8c", "attachments": [], "pluginData": []}
  ]
}
'''

# 解析JSON并提取id
data = json.loads(json_str)
card_ids = [card['id'] for card in data['cards']]
print(card_ids) # 输出 ['57cea8c', '57cea8c', '57cea8c', '57cea8c']

非要用正则的话(仅适合固定格式场景)

调整正则为全局匹配模式,同时匹配所有"id":"xxx"项(若需限定在cards数组内,可先提取cards子串再匹配):

正则表达式(需开启全局g和多行m标志)
"id":"([^"]+)"
JavaScript使用示例
const jsonStr = '你的JSON字符串';
const regex = /"id":"([^"]+)"/g;
const cardIds = [];
let match;
// 循环捕获所有匹配结果
while ((match = regex.exec(jsonStr)) !== null) {
  cardIds.push(match[1]);
}
console.log(cardIds);

注意:如果JSON中存在其他id字段(比如根节点的id),该正则会一并匹配,此时建议先提取cards数组的子字符串再执行匹配。

内容的提问来源于stack exchange,提问作者Md. Ismiel Hossen Abir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 05:53:14