以下是从响应中提取字符串时需要处理的案例。
动态数组具有时,需要替换默认字符串(无关键字) 没有数据。即。,[""]
RegEx结果应为:无关键字
当响应数组只有一个值时需要提取数据,即" [dataOne]"
RegEx结果应为:dataOne
当响应数组有多个值时,需要提取第一个数据,即,#34; [dataOne,dataTwo,dataThree]"
RegEx结果应为:dataOne
以下是我的示例回复: 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\":"\[([^,]*)
答案 0 :(得分:0)
\"positive_keywords\":"\[([^,\]]*)(?:,|\])
经过测试here。第1组包含您的预期结果。
如果数组为空,则组1将返回空字符串。您必须使用除正则表达式之外的其他内容来用no keyword
默认字符串替换此案例。
解释。 (?:,|\])
匹配数组的末尾(数组中单个项的大小写)或第二个元素的开头(数组中多个项的大小写)。 ?:
使其成为非捕获组,因此不会存储该组的匹配结果。