DataFeedWatch Blog | Feed Marketing Tips, Adviezen, Inzichten

Ninja Level DataFeed Optimalisatie door het gebruik van RegExp

Geschreven door René Bisschop | 13-mei-2017 20:59:45

Diegenen van u die al gebruik maken van DataFeedWatch hebben misschien het woord “regexp” wel eens zien staan in mapping opties. In dit artikel zal ik uitleggen hoe RegExp kan worden gebruikt in onze app, maar laat ik eerst vertellen wat RegExp precies is.

Een ‘Regular Expression’ (afgekort tot RegExp) is een speciale tekst-string om een zoekpatroon te beschrijven. Denk aan regular expressions als een jokerteken op steroïden. U bent waarschijnlijk wel bekend met wildcard-schrijfwijzen zoals *.txt om alle tekstbestanden in een bestandsmanager te vinden. RegExp werkt volgens dezelfde principes maar kan zoveel meer doen.

Het vereist wat oefening om te wennen aan RegExp, maar zodra u het onder de knie heeft is het bijzonder handig. Voor diegenen die geïnteresseerd zijn in het leren van regular expressions beveel ik deze handleiding aan.

Het is ook een goed idee om uw RegExp te testen voordat u het daadwerkelijk inzet. Er zijn veel online tools in omloop die precies dat voor u doen. De tool die ik gebruik heet Rubular.

Dus, laten we gaan kijken naar voorbeelden uit de praktijk om te zien waar RegExp kan helpen als het gaat om feed optimalisatie.

 

Voorbeeld 1

Stelt u zich voor dat u een veld ‘kleur’ moet maken voor uw Google Shopping-feed. U heeft geen veld voor kleur in uw winkel, maar u weet dat alle titels van uw producten eindigen met een kleurnaam (bijv. Adidas Heren Snova Glide 5 Loopschoenen Groen).

De beste manier om met deze situatie om te gaan is om kleur te structureren vanuit naam en een extra vervang-regel te gebruiken met RegExp zoals hier:

Wat het doet:

  1. Verdeel iedere naam in twee groepen:
    groep 1 - alles behalve het laatste woord vertegenwoordigd door (.*), waar
    .* => ieder enkel karakter dat ieder aantal keren voorkomt
    groep 2 – het laatste woord, voorgesteld als (s[^s]+) waar
    s => iedere witruimte
    [^s]+ => ieder enkel karakter, zonder witruimtes, dat op zijn minst een keer voorkomt
  2. Vervang bestaande waarde die kan worden beschreven als (.*)(s[^s]+) met een nieuwe waarde die groep 2 is (in RegExp-taxonomie geschreven als $2)

De uitkomst van deze mapping voor “Adidas Heren Snova Glide 5 Loopschoenen Groen” zou “Groen” moeten zijn.

 

Voorbeeld 2

Stelt u zich voor dat u een veld ‘prijs’ maakt voor een kanaal dat 2 getallen achter de komma accepteert (bijv. 12,45) en uw prijzen hebben er vier (12,4500). Weer komt de vervang regel met RegExp ons hier te hulp door het formaat aan te kunnen passen zoals hier:

Deze regel, vergelijkbaar aan het vorige voorbeeld:

  1. Verdeelt iedere prijs in 2 groepen;
    groep 1 – alle behalve de laatste twee cijfers achter de komma ([0-9]+.[0-9]{2}) waar
    [0-9]+ => ieder heel nummer
    , => komma karakter
    ([0-9]{2} => ieder 2-cijferig nummer
    groep 2 – de laatste twee decimalen ([0-9]{2})
  2. Vervangt bestaande waarde welke kan worden omschreven als ([0-9]+.[0-9]{2})([0-9]{2}) met een nieuwe waarde die groep 1 is ($1)

De uitkomst van deze structuur voor 12,4500 is 12,45.

Let op: deze structuur rondt de prijs niet af op 2 decimalen achter de komma, maar snijdt alleen de laatste twee cijfers eraf.

 

Voorbeeld 3

Laten we stellen dat u product_type wilt instellen voor Google Shopping als de belangrijkste categorie van uw producten (bijv. Auto-onderdelen) maar in uw systeem heeft u alleen een pad staan voor de hele categorie (bijv. Auto-onderdelen > BMW > 320i > 2013).

Wat u hier moet doen is alles verwijderen vanaf ‘>’. De regel die dit doet, ziet er zo uit:

Waar

s>.* => iedere enkel karakter gevolgd door “>” gevolgd door ieder enkel karakter dat ieder aantal keren voorkomt.

De uitkomst van deze structuur voor “Auto-onderdelen > BMW > 320i > 2013” zou “Auto-onderdelen” moeten zijn.

 

Voorbeeld 4

Stelt u zich voor het laatste voorbeeld een kanaal voor dat UPCs vereist, maar in uw systeem hebben niet alle producten UPCs en de UPCs die u wel heeft hebben niet allemaal het juiste (12-cijferige) formaat. Als u een feed stuurt met producten waarin de UPC’s leeg zijn of niet juist, dan wordt de hele feed afgekeurd. Wat u moet doen is deze producten uitsluiten. Dit kan met een enkele regel met gebruik van … RegExp.

Wat we hier moeten doen is alleen die producten insluiten waarvoor UPC een exact 12-cijferig nummer is. In andere woorden: sluit alleen producten in als UPC matcht met regexp ^[0-9]{12}$

Dit zijn slechts een paar van de talloze voorbeelden hoe RegExp kan worden ingezet. De vuistregel is dat waar er een complexe mapping is, u gebruik moet maken van RegExp als uw “toverstaf”.

Als u tegen zaken aanloopt betreffende uw mapping, beschrijf ze dan hieronder. Ik zal dan proberen een juiste RegExp manier te vinden om ermee om te gaan.