如何使用正则表达式解析此Amazon错误报告?

时间:2009-04-16 15:48:17

标签: regex amazon

当您向亚马逊提交产品Feed时,它会返回错误报告,其中包含对未匹配产品的建议,如下所示:

18  998 8042    Error   "SKU '998'ASIN B0001FSZ6K  'item_name' Merchant value: 'Promax Nutrition Promax Bar - Mocha Blast' Amazon catalog value: 'Promax Bars, Mocha Blast 12 bars'.   ASIN B00024D3HQ  'manufacturer' Merchant value: 'Promax Nutrition' Amazon catalog value: 'PROMAX'  'item_name' Merchant value: 'Promax Nutrition Promax Bar - Mocha Blast' Amazon catalog value: 'Promax Gourmet Bar Mocha Blast 12 bars'."

在此示例中,“商家值:”是提交的内容,“亚马逊目录价值:”是一个非常接近的匹配。

我正在尝试提取这些值,以便我们调整Feed提交并重新发送错误的项目。我把这个正则表达式拼凑在了一起:

(Merchant value\:) (')(.+?)(')( Amazon catalog value\: )(')(.+?)(ASIN)

这几乎可行。我可以拉第3组和第7组并且有时候有我的价值观。不幸的是,有些建议如下:

Merchant value: 'Barleans' Amazon catalog value: 'Barlean's Organic Oils'

所以勾选将打破比赛。我假设我可以将结束比赛更改为“'”并忽略“s”,但我不确定我的正则表达式是否完全有效,我知道它很容易打破角落的情况。

修改以澄清:

我想要的数据是:

SKU(第一个例子中的998) 然后针对每个建议: 字段(项目名称或制造商) 我们的价值 亚马逊的建议价值

所以它会像:

998 | itemname | Promax Nutrition Promax酒吧 - 摩卡爆炸| Promax Bars,Mocha Blast 12 bar

1 个答案:

答案 0 :(得分:2)

我在网上找到的有关此类Amazon错误消息的引用显示格式如下:

定义:

<@foreach ASIN><ASIN> <@foreach attribute that differs><ATTRIBUTE> Merchant value: “<merch val>” Amazon catalog value: “<Amazon catalog value>”;</foreach>.</foreach>

实施例

SKU “a1b2d4” could correspond to multiple ASINs in the Amazon catalog. Please review the possible matches below.

If your product is the same as the product on one of these detail pages, please modify your product data to reflect the Amazon catalog values and resubmit. If your product is different than what is on these detail pages, please provide more data and resubmit.

ASIN B1234567890 “UPC” Merchant value: “12345678901” Amazon catalog value: “00000000000” “TITLE” Merchant value: “Good Bad Ugly” Amazon catalog value: “The Good, the Bad, and the Ugly”.

ASIN B0987654321 “UPC” Merchant value: “12345678901” Amazon catalog value: “12345678901” “TITLE” Merchant value: “Good Bad Ugly” Amazon catalog value: “For a few dollars more.”

在我看来,您正在对其进行一些处理,以将智能引号()转换为单引号。如果你要这样做,你将不得不以某种方式逃避撇号。将它们转换为双引号而不是单引号可能更容易,或者只是用智能引号完整地解析它。

如果单独留下智能引号,这是一个简单的正则表达式,但如果将它们转换为单引号并且不对字符串内的撇号做任何操作则不可能。