如何修复正则表达式以仅从广告系列中选择base_bid - 而不是跳过我的结束字符串 - base_bid文本
How to fix regex to only select from campaign to base_bid - and not skip over my ending string - base_bid text
我的正则表达式正在抓住这个:
campaign":{"id":100134,"state":"active","code":null,"advertiser_id":21147,"line_item_id":44854,"creative_id":481909,"pixel_id":null,"short_name":null,"name":"WSPA ROE 0711","profile_id":438747,"start_date":"2011-07-06 00:00:00","end_date":null,"timezone":"Europe/London","priority":5,"cadence_modifier_enabled":true,"cpc_goal":null,"cpm_bid_type":"base","base_bid":0.16,"min_bid":null,"max_bid":null,"bid_margin":0,"roadblock_creatives":false,"roadblock_type":"no_roadblock","inventory_type":"real_time","last_modified":"2014-05-28 16:06:01","max_learn_bid":null,"cadence_type":"creative","click_url":null,"require_cookie_for_tracking":true}}}{"response":{"status":"OK","count":1,"start_element":0,"num_elements":100,"campaign":{"id":12039447,"state":"active","code":null,"advertiser_id":180353,"line_item_id":2703939,"creative_id":null,"pixel_id":null,"short_name":null,"name":"Copy Jan Programmatic BAU - 6 RTG - Register 2a. (7D)","profile_id":51061721,"start_date":"2015-08-20 00:00:00","end_date":null,"timezone":"Europe/London","priority":5,"cadence_modifier_enabled":false,"cpc_goal":null,"cpm_bid_type":"base","base_bid":1.25,|100134
当我想让它抓住时:
campaign":{"id":100134,"state":"active","code":null,"advertiser_id":21147,"line_item_id":44854,"creative_id":481909,"pixel_id":null,"short_name":null,"name":"WSPA ROE 0711","profile_id":438747,"start_date":"2011-07-06 00:00:00","end_date":null,"timezone":"Europe/London","priority":5,"cadence_modifier_enabled":true,"cpc_goal":null,"cpm_bid_type":"base","base_bid":0.16,
和
campaign":{"id":12039447,"state":"active","code":null,"advertiser_id":180353,"line_item_id":2703939,"creative_id":null,"pixel_id":null,"short_name":null,"name":"Copy Jan Programmatic BAU - 6 RTG - Register 2a. (7D)","profile_id":51061721,"start_date":"2015-08-20 00:00:00","end_date":null,"timezone":"Europe/London","priority":5,"cadence_modifier_enabled":false,"cpc_goal":null,"cpm_bid_type":"base","base_bid":1.25,
即两批。 所以打印:
100134|0.16
12039447|1.25
我该如何解决这个问题?
这是我的文本脚本
</head>
<body>
<script>
var theString = '{"response":{"status":"OK","count":1,"start_element":0,"num_elements":100,"campaign":{"id":100134,"state":"active","code":null,"advertiser_id":21147,"line_item_id":44854,"creative_id":481909,"pixel_id":null,"short_name":null,"name":"WSPA ROE 0711","profile_id":438747,"start_date":"2011-07-06 00:00:00","end_date":null,"timezone":"Europe/London","priority":5,"cadence_modifier_enabled":true,"cpc_goal":null,"cpm_bid_type":"base","base_bid":0.16,"min_bid":null,"max_bid":null,"bid_margin":0,"roadblock_creatives":false,"roadblock_type":"no_roadblock","inventory_type":"real_time","last_modified":"2014-05-28 16:06:01","max_learn_bid":null,"cadence_type":"creative","click_url":null,"require_cookie_for_tracking":true}}}{"response":{"status":"OK","count":1,"start_element":0,"num_elements":100,"campaign":{"id":12039447,"state":"active","code":null,"advertiser_id":180353,"line_item_id":2703939,"creative_id":null,"pixel_id":null,"short_name":null,"name":"Copy Jan Programmatic BAU - 6 RTG - Register 2a. (7D)","profile_id":51061721,"start_date":"2015-08-20 00:00:00","end_date":null,"timezone":"Europe/London","priority":5,"cadence_modifier_enabled":false,"cpc_goal":null,"cpm_bid_type":"base","base_bid":1.25,"min_bid":null,"max_bid":null,"bid_margin":0,"roadblock_creatives":false,"roadblock_type":"no_roadblock","inventory_type":"real_time","last_modified":"2016-02-09 12:11:02","max_learn_bid":null,"cadence_type":"advertiser","click_url":null,"require_cookie_for_tracking":true}}}';
var regexp = /campaign":{"id":([0-9]+),"state":.*"base_bid":([0-9.]+),/g;
var match = regexp.exec(theString);
while (match != null){
console.log(match[0] + '|' + match[1]);
var match = regexp.exec(theString);
}
</script>
</body>
<html>
我认为该正则表达式的问题在于"base_bid"之前的.*
匹配第一个"id"和最后一个"base_bid"之间的所有内容。我不确定如何修复正则表达式。
但是,你用过JSON.parse
吗?它内置于Javascript中,并将有效的JSON字符串转换为javascript对象。如果您能够将jsonString
拆分为单独的响应,则可以非常简单地获得广告系列 ID 和基本出价值。
这不是一个完美的解决方案,但我会尝试在这里说明我的想法:
// Your original string.
var jsonString = '{"response":{"status":"OK","count":1,"start_element":0,"num_elements":100,"campaign":{"id":100134,"state":"active","code":null,"advertiser_id":21147,"line_item_id":44854,"creative_id":481909,"pixel_id":null,"short_name":null,"name":"WSPA ROE 0711","profile_id":438747,"start_date":"2011-07-06 00:00:00","end_date":null,"timezone":"Europe/London","priority":5,"cadence_modifier_enabled":true,"cpc_goal":null,"cpm_bid_type":"base","base_bid":0.16,"min_bid":null,"max_bid":null,"bid_margin":0,"roadblock_creatives":false,"roadblock_type":"no_roadblock","inventory_type":"real_time","last_modified":"2014-05-28 16:06:01","max_learn_bid":null,"cadence_type":"creative","click_url":null,"require_cookie_for_tracking":true}}}{"response":{"status":"OK","count":1,"start_element":0,"num_elements":100,"campaign":{"id":12039447,"state":"active","code":null,"advertiser_id":180353,"line_item_id":2703939,"creative_id":null,"pixel_id":null,"short_name":null,"name":"Copy Jan Programmatic BAU - 6 RTG - Register 2a. (7D)","profile_id":51061721,"start_date":"2015-08-20 00:00:00","end_date":null,"timezone":"Europe/London","priority":5,"cadence_modifier_enabled":false,"cpc_goal":null,"cpm_bid_type":"base","base_bid":1.25,"min_bid":null,"max_bid":null,"bid_margin":0,"roadblock_creatives":false,"roadblock_type":"no_roadblock","inventory_type":"real_time","last_modified":"2016-02-09 12:11:02","max_learn_bid":null,"cadence_type":"advertiser","click_url":null,"require_cookie_for_tracking":true}}}';
// Find where the first response ends and the second begins.
// (+ 1 because we need to get between the }{ when we split.)
// (It would be great if the strings weren't concatenated to begin with.)
var splitIndex = jsonString.indexOf('}{') + 1;
// Get the two individual JSON responses.
var firstResponseJson = jsonString.substring(0, splitIndex);
var secondResponseJson = jsonString.substring(splitIndex);
// Parse the first JSON string.
var firstResponse = JSON.parse(firstResponseJson);
// We now have an Object with a "response" attribute, which contains
// all the information we need about this campaign.
var firstId = firstResponse.response.campaign.id;
var firstBaseBid = firstResponse.response.campaign.base_bid;
console.log(firstId + '|' + firstBaseBid);
很抱歉没有使用正则表达式的答案,但我认为如果您能够将该 JSON 解析为对象,它最终将是一个更灵活的解决方案。
相关文章:
- 我将如何将Base的原型分配给User
- 使用Re-base时,在React中从状态绑定和取消绑定Firebase
- HTML Playing Base 64编码音频,带angularJS,错误:[$interpole:nooncat]
- javascript oop, instanceof and base class
- `base`tag导致iframe在Internet Explorer中以新窗口的形式打开
- Codeigniter base url 在 javascript 中无法识别
- 为什么除了“goog.inherits()”之外还需要“goog.base(this)”
- javascript document.write("<base href=""&g
- 如何使用科尔多瓦文件传输下载 base 64 映像
- 无法使用角度 js 将 base 64 图像数据发送到服务器
- 在 javascript 中创建一个 base 64 的本地映像文件
- 模块构建失败:引用错误:[BABEL] 未知选项:base.stage
- JavaScript 中的 Base 64 编码
- 根据 base 64 内容确定图像类型
- Base 64 编码或二进制
- 使用 ReactFire 或 Re-base 显示来自 Firebase 的用户特定数据
- 将文件从js发送到作为base64的c#webapi.输入不是有效的Base-64字符串
- JavaScript Base 64解码二进制数据不;t工作
- Aurelia Babel未知选项base.modules错误
- Django从数据库初始化base.html中的东西