Como posso analisar este relatório de erro Amazon com uma expressão regular?

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

  •  09-09-2019
  •  | 
  •  

Pergunta

Quando você enviar um feed de produtos para a Amazônia ele retornará um relatório de erros que conterá sugestões para produtos que não foram combinados, assim:

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

Neste exemplo "valor Merchant:" é o que foi submetido e "valor de catálogo Amazon:". É uma estreita correspondência

Eu estou tentando extrair esses valores para que possamos ajustar o nosso feed apresentação e reenviar os itens errados. Eu cortei juntos este regex:

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

Esta quase funciona. Eu posso puxar grupo 3 e 7 e tenho meus valores ... às vezes. Infelizmente algumas das sugestões parecido:

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

Assim, o carrapato vai quebrar o jogo. Eu suponho eu posso mudar o jogo final em " '" e ignorar o "' s", mas não tenho certeza se meu regex é de todo eficiente e eu sei que é propenso a quebrar sobre os casos de canto.

Editar para esclarecer:

Os dados Eu estou tentando obter seria:

SKU (998 no primeiro exemplo) em seguida, para cada sugestão: Field (itemname ou fabricante) nosso valor Sugestão de Valor da Amazon

Assim que seria como:

998 | itemname | Promax Nutrição Promax Bar - Mocha explosão | Bares Promax, Mocha Explosão 12 bares

Foi útil?

Solução

As referências que eu tenho sido capaz de encontrar na web para esse tipo de mensagem de erro Amazon mostrar o formato da seguinte forma:

Definição:

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

Exemplo:

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.”

Parece-me que você está fazendo algum processamento sobre ele para converter os inteligentes aspas ( e ) para aspas simples. Se você estiver indo para fazer isso, você terá que escapar apóstrofos de alguma forma-se. Pode ser mais fácil para convertê-los em aspas duplas em vez de único, ou apenas analisá-lo com as inteligentes aspas intactas.

É uma expressão regular simples se você deixar os inteligentes aspas sozinho, mas impossível se você convertê-los em aspas simples e não fazer nada para apóstrofos dentro das cordas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top