DataFeedWatch Blog | Datenfeed Optimierung Tips

Datenfeed-Optimierung auf Ninja-Level mit RegExp

Geschrieben von Martin Ender | 14.01.2020 09:00:00

Denjenigen von Ihnen, die DataFeedWatch bereits verwenden, ist vielleicht das Wort "regexp" in den Mapping-Optionen aufgefallen. In diesem Artikel werde ich erklären, wie RegExp in unserer App verwendet werden kann, aber lassen Sie uns zunächst klären, was genau RegExp ist.

Ein regulärer Ausdruck („regular expression“, kurz RegExp) ist ein spezieller Text-String zur Beschreibung eines Suchmusters. Sie können sich reguläre Ausdrücke als Platzhalter auf Steroiden vorstellen. Sie sind wahrscheinlich mit Platzhalterschreibweisen wie *.txt vertraut, um alle Textdateien in einem Dateimanager zu finden. RegExp arbeitet nach den gleichen Prinzipien, kann aber noch viel mehr.

Es braucht etwas Übung, um den Umgang mit RegExp zu erlernen, aber wenn man es einmal gemeistert hat, ist es sehr praktisch. Für diejenigen, die daran interessiert sind, reguläre Ausdrücke zu lernen, kann ich dieses Tutorial empfehlen.

Es ist außerdem eine gute Idee, Ihr RegExp vor dem Einsatz zu testen. Um das zu tun, stehen viele Online-Tools zur Verfügung. Das Tool, das ich benutze, heißt Rebular.

Kommen wir also zu Praxisbeispielen, um zu sehen, wie RegExp bei der Feed-Optimierung helfen kann.

 

Beispiel 1

Stellen Sie sich vor, Sie müssen ein Feld "Farbe" für Ihren Google-Shopping-Feed erstellen. Sie haben kein Farbfeld in Ihrem Geschäft, aber Sie wissen, dass die Titel all Ihrer Produkte mit einem Farbnamen enden (z.B. Adidas Herren Snova Glide 5 Laufschuhe Grün).

Am besten geht man mit dieser Situation um, indem man die Farbe aus dem Namen abbildet und eine zusätzliche Ersetzungsregel mit RegExp wie diese verwendet:

 

Was sie tut, ist:

  1. jeden Namen in zwei Gruppen aufzuteilen:
    Gruppe 1 - alles außer dem letzten Wort repräsentiert durch (.*), wobei
    .* => jedes einzelne Zeichen, das beliebig oft erscheint Gruppe 2 - letztes Wort repräsentiert durch (s[^s]+), wobei
    s => jedes Leerzeichen
    [^s]+ => jedes einzelne Zeichen außer Leerzeichen, das mindestens einmal erscheint
  2. den bestehenden Wert, der als (.*)(s[^s]+) beschrieben werden kann, durch einen neuen Wert der Gruppe 2 zu ersetzen (in RegExp-Taxonomie als $2 geschrieben)

Das Ergebnis dieses Mappings für "Adidas Herren Snova Glide 5 Laufschuhe Grün" wäre "Grün".

 

 

Beispiel 2

Stellen Sie sich vor, Sie erstellen ein Preisfeld für einen Channel, der 2 Dezimalstellen akzeptiert (z.B. 12,45) und Ihre Preise haben 4 (12,4500). Auch hier ist die Ersetzungsregel mit RegExp hilfreich. Um das Format zu korrigieren, müssen wir sie so einstellen:

Ähnlich wie im vorherigen Beispiel macht diese Regel folgendes:

  1. teilt jeden Preis in 2 Gruppen ein:
    Gruppe 1 - alles außer den letzten beiden Dezimalstellen ([0-9]+.[0-9]{2}), wobei
    [0-9]+ => jede ganze Zahl
    . => Punktzeichen
    ([0-9]{2} => jede zweistellige Zahl Gruppe 2 - die letzten beiden Dezimalstellen ([0-9]{2})
  2. ersetzt den vorhandenen Wert, der als ([0-9]+.[0-9]{2})([0-9]{2}) beschrieben werden kann, durch einen neuen Wert, der Gruppe 1 ($1)

Das Ergebnis dieses Mappings für 12,4500 ist 12,45.

Beachten Sie, dass dieses Mapping den Preis nicht auf zwei Dezimalstellen aufrundet, sondern die letzten beiden Stellen abschneidet.

 

Beispiel 3

Angenommen, Sie möchten product_type für Google Shopping als Hauptkategorie Ihrer Produkte (z.B. Autoteile) festlegen, aber in Ihrem System haben Sie nur die gesamten Kategorie-Pfade (z.B. Autoteile > BMW > 320i > 2013).

Hier müssen Sie alles ab " >" entfernen. Die Regel, die dies abdeckt, würde so aussehen:

wo

s>.* => jedes einzelne Zeichen gefolgt von ">" gefolgt von jedem einzelnen Zeichen, das beliebig oft erscheint

Das Ergebnis dieses Mappings für "Autoteile > BMW > 320i > 2013" wäre "Autoteile".

 

Beispiel 4

Stellen Sie sich für das letzte Beispiel einen Channel vor, der UPCs benötigt, aber in Ihrem System haben nicht alle Produkte UPCs und die UPCs, die Sie haben, haben nicht alle ein geeignetes Format (12-stellig).

Wenn Sie einen Feed mit Produkten senden, deren UPCs leer oder unsachgemäß sind, kann der gesamte Feed abgelehnt werden. Solche Produkte müssen Sie ausschließen. Dies kann mit einer einzigen Ausschluss-Regel erreicht werden, indem man, raten Sie mal... RegExp verwendet.

 

 

Hier beziehen wir nun nur Produkte ein, für die UPC genau eine 12-stellige Nummer ist. Mit anderen Worten, schließen Sie Produkte nur dann ein, wenn UPC mit regexp ^[0-9]{12}$ übereinstimmt

Das sind nur einige wenige von zahllosen Beispielen dafür, wie RegExp eingesetzt werden kann. Die Faustregel lautet: Wann immer ein komplexes Mapping von Nöten ist, ist RegExp die "Waffe Ihrer Wahl".

Wenn Sie irgendwelche Mapping-Probleme haben, beschreiben Sie diese bitte in den Kommentaren und ich werde versuchen, eine geeignete RegExp zu finden, um damit umzugehen (wenn möglich).