DataFeedWatch Blog | Datenfeed Optimierung Tips

Ninja-Level Datenfeed-Optimierung mit RegExp

Geschrieben von Martin Ender | 05.03.2020 10:40:41

 

Diejenigen von Ihnen, die bereits DataFeedWatch verwenden, haben vielleicht das Wort "regexp" in den Mappingoptionen bemerkt. In diesem Artikel werde ich erklären, wie RegExp in unserer Anwendung verwendet werden kann, aber lasst uns zuerst klären, was genau RegExp ist.

Eine reguläre Expression (kurz RegExp) ist ein spezieller Textstring zur Beschreibung eines Suchmusters. Man kann sich reguläre Ausdrücke als Platzhalter auf Steroiden vorstellen.

Wahrscheinlich sind Ihnen Wildcard-Schreibweisen wie *.txt bekannt, um alle Textdateien in einem Dateimanager zu finden. RegExp arbeitet nach dem gleichen Prinzip, kann aber so viel mehr.

Es braucht etwas Übung, um den Dreh mit RegExp herauszubekommen, aber wenn man es einmal beherrscht, ist es sehr nützlich. Für diejenigen, die daran interessiert sind, RegExps zu lernen, kann ich dieses Tutorial empfehlen.

Außerdem ist es eine gute Idee, Ihre RegExp vor der Bereitstellung zu testen. Es gibt viele Online-Werkzeuge, die genau das tun können. Das Werkzeug, das ich benutze, heißt Rebular.

Lassen Sie uns also mit Beispielen aus dem wirklichen Leben fortfahren, um zu sehen, wie RegExp bei der Feed-Optimierung hilfreich sein kann.

Beispiel 1

 

Stellen Sie sich vor, Sie müssen ein Feld 'Farbe' für Ihren Google Shopping-Feed erstellen. Sie haben kein Feld für Farbe in Ihrem Shop, aber Sie wissen, dass alle Titel Ihrer Produkte mit einem Farbnamen enden (z.B. Adidas Mens Snova Glide 5 Running Shoes Green).

Der beste Weg, mit dieser Situation umzugehen, ist, die Farbe aus dem Namen abzubilden und eine zusätzliche Ersetzungsregel mit RegExp wie diese zu verwenden:

 

Was es macht, ist:

  1. jeden Namen in zwei Gruppen einzuteilen:
    group 1 - alles bis auf das letzte Wort, dargestellt durch (.*) wo
    .* => jedes einzelne Zeichen, das beliebig oft erscheint group 2 –das letzte Wort vertreten durch (s[^s]+) wo
    s => jedes Leerzeichen
    [^s]+ => jedes einzelne Zeichen außer Whitespace, das mindestens einmal vorkommt
  2. Ersetzt den vorhandenen Wert, der sich wie folgt beschreiben lässt (.*)(s[^s]+) mit einem neuen Wert, der group 2 (in der RegExp-Taxonomie geschrieben als $2)

Das Ergebnis dieses Mappings für "Adidas Mens Snova Glide 5 Running Shoes Green" wäre "Green".

 

Holen Sie sich unseren Leitfaden zur Verdoppelung Ihrer Google Shopping Verkäufe in einer Stunde

 

Beispiel 2

 

Stellen Sie sich vor, Sie erstellen ein Preisfeld für einen Kanal, das zwei Dezimalstellen akzeptiert (z.B. 12,45) und Ihre Preise haben vier (12,4500). Auch hier ist die Ersetzungsregel durch RegExp sehr praktisch. Um das Format zu fixen, müssen wir es wie folgt einstellen:

 

 

Ähnlich wie im vorherigen Beispiel diese Regel:

  1. teilt jeden Preis in zwei Gruppen ein:
    group 1 – alles bis auf die letzten zwei Nachkommastellen
    ([0-9]+.[0-9]{2}) wo
    [0-9]+ => eine beliebige ganze Zahl
    . => Punktzeichen
    ([0-9]{2} => beliebige zweistellige Zahl group 2 – die letzten beiden Nachkommastellen ([0-9]{2})
  2. ersetzt den bestehenden Wert, der sich wie folgt beschreiben lässt ([0-9]+.[0-9]{2})([0-9]{2}) mit einem neuen Wert, der Gruppe 1 ($1) ist. 

Das Ergebnis dieses Mappings für 12.4500 ist 12.45 Uhr.

Bitte beachten Sie, dass diese Zuordnung den Preis nicht auf zwei Dezimalstellen aufrundet, sondern die letzten beiden Stellen abschneidet.

 

Beispiel 3

 

Nehmen wir an, Sie wollen product_type für Google Shopping als eine Hauptkategorie Ihrer Produkte (z.B. Autoteilen) festegen, aber in Ihrem System haben Sie nur die gesamten Kategoriepfade (z.B. Car Parts > BMW > 320i > 2013).

Was Sie hier tun müssen, ist alles zu entfernen, was mit " >" beginnt. Die Regel, die dies abdeckt, würde so aussehen:

 

wo

s>.* => ein beliebiges Einzelzeichen, gefolgt von ">", gefolgt von einem beliebigen Einzelzeichen, das beliebig oft erscheint

Das Ergebnis dieser Kartierung für “Car parts > BMW > 320i > 2013” wäre “Car parts”.

 

Beispiel 4

 

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

Wenn Sie einen Feed mit Produkten senden, für die keine oder falsche UPCs vorhanden sind, könnte der gesamte Feed abgelehnt werden. Was Sie tun müssen, ist diese Produkte auszuschließen. Dies kann mit einer einzigen Ausschlussregel erreicht werden, durch, wer hätte es gedacht... RegExp.

 

 

Wir erfassen hier nur Produkte, bei denen UPC genau eine 12-stellige Zahl ist. Mit anderen Worten: Wir nehmen nur Produkte auf, bei denen UPC mit regexp übereinstimmt. ^[0-9]{12}$

Dies sind nur einige wenige von unzähligen Beispielen, wie RegExp eingesetzt werden kann. Als Faustregel gilt, dass immer dann, wenn ein komplexes Mapping ansteht, RegExp die "Waffe der Wahl" ist.

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