Na úvod ešte trochu teórie, ktorá sa do minulých dielov nezmestila. V regulárnych výrazoch je možné pracovať aj s negáciou, a to pomocou striešky na začiatku množiny znakov. Napríklad:
- [^\d] zodpovedá jednému znaku, ktorý nie je číslica,
- [^\s] zodpovedá jednému znaku, ktorý nie je medzera (nejde o biely znak).
Regulárny výraz [^\s]*$ tak bude hľadať akékoľvek znaky od konca reťazca po prvú medzeru (biely znak). Takto je možné nájsť napr. Posledné slovo alebo číslo v reťazci (pozri príklad, ku ktorému sme využili túto stránku).
EAN
EAN môže mnohokrát spôsobovať problémy pri zobrazovaní produktov vo vašom feede. Pozrieme sa teda na dva časté problémy s jeho využitím.
1. Hromadné odstránenie EAN kódov z popisku produktov
Pre odstránenie EANu z DESCRIPTION alebo napríklad CATEGORYTEXTU jednotlivých produktov potrebujeme využiť pravidlo s regulárnym výrazom, ktoré vyhľadá číselný reťazec s dĺžkou 8 – 13 znakov vrátane medzery za ním, a nahradí ho za “nič”. Využijeme teda pravidlo typu nájsť a nahradiť, pričom v elemente CATEGORYTEXT budeme vyhľadávať nasledujúce regulárny výraz: \d{8,13}\s, a do poľa pre nahradenie nezadáme nič.
Toto pravidlo môžeme aplikovať na všetky produkty, nie je potreba robiť špeciálny výber — tam kde sa EAN v popisku produktu nenájde sa nič nestane a pravidlo sa neaplikuje.
2. Kontrola EANu
Chybná dĺžka EANu môže byť tiež častým zdrojom problémov napríklad pri exporte dát do Google Merchant. Pomocou regulárnych výrazov v Mergadu takú chybu ľahko odladíte.
Povedzme, že chcete vyhľadať všetky produkty, ktoré majú EAN zle — obsahujú iný počet znakov ako 8 alebo 12 – 14 (čo sú najčastejšie dĺžky EANu). Budeme teda vyhľadávať také produkty, ktoré v elemente EAN nemajú práve 8 alebo práve 12 – 14 znakov. Tu využijeme striešku z úvodu, prípadne v jednoduchom rozhraní Mergada príkaz “neobsahuje regulárny výraz”: ^(\ d{8}|\d{12,14})$
- Strieška a dolár označujú začiatok a koniec reťazca, v ktorom vyhľadávame (oproti predchádzajúcemu príkladu tentoraz EAN neobklopuje ďalší text).
- \d vyhľadáva číslice — buď presne 8 ľubovoľných číslic (osmička v zloženej zátvorke) alebo (zvislou čiarou) presne 12 — 14 ľubovoľných číslic.
Odstránenie veľkosti z PRODUCTNAME
Niektoré porovnávače — napríklad Glami — požadujú, aby element PRODUCTNAME neobsahoval informáciu o veľkosti produktu, pretože pre ňu má špeciálny element PARAM. V prípade, že máte svoje produkty v e‑shope takto pomenované, potrebujete časť názvu zmazať u veľkého množstva položiek. Ako na to?
Pomocou pravidlá nájsť a nahradiť budeme hľadať konkrétne regulárny výraz: veľkosť\s*[\ dSMLX]+ a nahrádzať za “nič”.
Chceme totiž nájsť slovné spojenie veľkosti a písmená alebo čísla, ktoré danú veľkosť označuje, pričom medzi slovom “veľkosť” a hodnotou môže byť ľubovoľný počet medzier.
Poďme ale postupne a ukážme si, ako takýto zápis vytvoriť:
- veľkosť — hľadáme reťazec, v ktorom je slovo “veľkosť”,
- hodnota veľkosti — vieme, že hodnoty označujeme písmenom (S, M, L, …) a občas tiež kombináciou písmená a čísla (napr. 4XL). Preto použijeme zápis \d, ktorý vyhľadáva všetky čísla od 0 do 9, a následne vymenujeme všetky písmená, z ktorých aspoň jedno sa vo výraze nachádza (preto hranaté zátvorky),
- toto označenie môže byť kdekoľvek v reťazci, nepoužijeme teda značky pre začiatok alebo koniec reťazca,
- medzi slovom “veľkosť” a samotnou hodnotou môže byť medzera (alebo viac medzier) a alebo tiež nemusí (napr. veľkostXL, veľkosť XL), preto použijeme vyhľadávanie medzier pomocou výrazu \s, hviezdička potom hovorí, že sa tam má medzera vyskytovať 0 až nespočetnekrát,
- znamienko plus na konci reťazca určuje, že sa celý hľadaný výraz v hranatých zátvorkách vyskytuje v našom reťazci aspoň raz.
Snáď ste sa v záplave zátvoriek a striešok nestratili. Ak áno, neváhajte sa nám ozvať na fórum alebo e‑mail, radi vám pomôžeme sa nájsť!