Как мне проанализировать этот отчет об ошибках Amazon с помощью регулярного выражения? - PullRequest
0 голосов
/ 16 апреля 2009

Когда вы отправляете поток продуктов в Amazon, он возвращает отчет об ошибке, который будет содержать предложения для продуктов, которые не были сопоставлены, например:

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:» - близкое совпадение.

Я пытаюсь извлечь эти значения, чтобы мы могли скорректировать нашу подачу и отправить ошибочные элементы. Я взломал это регулярное выражение:

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

Это почти работает. Я могу тянуть группы 3 и 7 и иметь свои ценности ... иногда. К сожалению, некоторые из предложений выглядят так:

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

Так что галочка сломает матч. Я предполагаю, что могу изменить конечное совпадение на «» и игнорировать «s», но я не уверен, что мое регулярное выражение вообще эффективно, и я знаю, что оно склонно к взлому в угловых случаях.

Изменить , чтобы уточнить:

Данные, которые я пытаюсь получить, будут:

SKU (998 в первом примере) тогда для каждого предложения: Поле (наименование или производитель) Наша ценность Рекомендуемое значение Amazon

Так было бы как:

998 | наименование товара | Promax Nutrition Promax Bar - Mocha Blast | Promax Bars, Мокко Бласт 12 баров

1 Ответ

2 голосов
/ 16 апреля 2009

Ссылки, которые мне удалось найти в Интернете для такого рода сообщения об ошибке 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.”

Мне кажется, что вы выполняете некоторую обработку для преобразования умных кавычек ( и ) в одинарные кавычки. Если вы собираетесь это сделать, вам придется каким-то образом избегать апострофов. Может быть проще преобразовать их в двойные кавычки вместо одиночных, или просто проанализировать их с неповрежденными умными кавычками.

Это простое регулярное выражение, если вы оставляете смарт-кавычки в покое, но невозможно, если вы преобразуете их в одинарные кавычки и ничего не делаете для апострофов внутри строк.

...