どのように私は、正規表現でこのアマゾンのエラーレポートを解析するのですか?

StackOverflow https://stackoverflow.com/questions/756760

  •  09-09-2019
  •  | 
  •  

質問

:あなたはアマゾンへの製品のフィードを送信すると、

それはそうのように、一致しなかった製品のための提案が含まれていますエラーレポートを返します。

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'."

この例では、「マーチャント値は:」提出されたものであり、「アマゾンのカタログ値:」近い一致です。

私たちは私たちのフィード送信を調整して、誤った項目を再送信することができますので、これらの値を抽出しようとしています。私は一緒にこの正規表現をハッキングしてきます:

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

これはほとんど動作します。私は時々...グループ3と7を引き、私の値を持つことができます。残念ながら、提案のいくつかは次のようになります:

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

だから、ダニは試合を中断します。私は「'」に終止符マッチを変更して、無視する「さん」をすることができ想定し、しかし、私は私の正規表現がまったく効率的であるかどうかわからないんだけど、私はそれがコーナーケースに破壊されやすいことを知っている。

編集明確にします:

私が取得しようとしているデータは以下のようになります:

(第1例における998)SKU その後、各提案について: フィールド(itemNameに又は製造者) 私たちの価値 Amazonの推奨値

それは次のようになりますのでます:

998 | itemNameに|プロマックス栄養プロマックスバー - モカブラスト|プロマックスバー、モカブラスト12バー

役に立ちましたか?

解決

私は、次のようなフォーマットを示しアマゾン・エラー・メッセージのこの種のためにウェブ上で見つけることができました。

参照:

定義:

<@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.”
あなたは単一引用符にスマート引用符()を変換するためにそれにいくつかの処理をやっているように、

これは、私には見えます。あなたはそれをやろうとしている場合は、何とか自分でアポストロフィをエスケープする必要があります。代わりに、単一の二重引用符に変換し、あるいは単にそのままスマート引用符でそれを解析する方が簡単な場合があります。

それはあなたが一重引用符に変換し、文字列内のアポストロフィに何もしない場合は、一人でスマート引用符を残す場合は、単純な正規表現だが、不可能ます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top