Come effettuo il parsing segnalazione errori Amazon con un'espressione regolare?

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

  •  09-09-2019
  •  | 
  •  

Domanda

Quando invii un feed di prodotti di Amazon verrà restituito un rapporto di errore che conterrà suggerimenti per prodotti che non sono stati abbinati, in questo modo:

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

In questo esempio "valore mercantile:" è quello che è stato presentato e "Amazon valore di catalogo:". È una stretta corrispondenza

Sto cercando di estrarre questi valori in modo che possiamo regolare la nostra sottomissione mangimi e inviare nuovamente le voci errate. Ho messo insieme questo regex:

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

Questo funziona quasi. Posso tirare il gruppo 3 e 7 e avere i miei valori ... a volte. Purtroppo alcuni dei suggerimenti assomigliano:

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

Quindi, il segno di spunta si romperà la partita. Presumo che posso cambiare la partita fine a " '" e ignorare la "' s", ma non sono sicuro se il mio regex è affatto efficiente e so che è incline alla rottura sui casi d'angolo.

Modifica per chiarire:

I dati che sto cercando di ottenere potrebbe essere:

SKU (998 nel primo esempio) allora per ogni suggerimento: Campo (ItemName o il produttore) Il nostro valore Valore consigliato di Amazon

Quindi sarebbe come:

998 | ItemName | Promax Nutrition Promax Bar - Mocha Blast | Promax Bar, Mocha Blast 12 bar

È stato utile?

Soluzione

I riferimenti sono stato in grado di trovare sul web per questo tipo di messaggio di errore Amazon mostrare il formato come segue:

Definizione:

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

Esempio:

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

Sembra a me come si sta facendo un po 'di elaborazione su di esso per convertire i smart-citazioni ( e ) ai singoli apici. Se avete intenzione di farlo, dovrete fuggire apostrofi in qualche modo te stesso. Può essere più facile per convertirli in virgolette doppie invece di singoli, o semplicemente analizzarlo con le smart-citazioni intatto.

Si tratta di una semplice espressione regolare se si lascia da solo le smart-citazioni, ma impossibile se li si converte al-apici e non fare nulla per apostrofi all'interno delle stringhe.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top