从动态数组中提取值

Extract values from dynamic array

这是我从响应中提取字符串时需要处理的情况。

这是我的回复示例: positive_keywords 是我需要从中提取的数组。

{
 "@odata.context":"http://xxxyyy.com","@odata.type":"#xxx.Services.Models.ContestSearchSvcMdl","advertiser_username":"yyy","company_name":"yyy","contest_mode":"TLP","is_private_invite":false,"positive_keywords":"[data one]","apply_credit_on_accept":true,"apply_credit_on_win":false,"auto_switch_target_ad":null,"id":"4276553b-988899cb-4577-800081-668ca2c05301","account_id":"0a5500cc1457-2049-4a2f-8ccc24e-055f1e935587","ad_group_id":"becccca7af6-6fc1-46cccab-877d-a15e812baa59","ad_group_name":"BRRRAND+EXACdFFT+ExpdddeDDrian","ad_group_label":null,"publisher_adgroup_id":null,"advertiser_id":"338000fa52c-e1fa-4b79-82a5-8b433615a2ef","campaign_id":"2ee1f0000f3-8d4a-4970-b009b8-3763a5f39474","campaign_name":"Brand+UKK+ENRG+RLFSA","publisher_adcampaign_id":null,"confidence":null
}

现在我已经低于正则表达式,但未处理上述条件。

\"positive_keywords\":"\[([^,]*)
\"positive_keywords\":"\[([^,\]]*)(?:,|\])

已测试 here。第 1 组包含您的预期结果。

如果数组为空,第 1 组将 return 一个空字符串。您必须使用正则表达式以外的其他东西来将这种情况替换为您的 no keyword 默认字符串。

说明。 (?:,|\]) 匹配数组的末尾(数组中单个项目的情况)或第二个元素的开头(多个项目的情况)在数组中)。 ?:使其成为非捕获组,因此不会存储该组的匹配结果。