Optymalizacja pliku danych na najwyższym poziomie przy użyciu RegExp

    diagram

     

    Ci z was, którzy już korzystają z DataFeedWatch, mogli zauważyć słowo „regexp” w opcjach mapowania. W tym artykule wyjaśnię, jak RegExp może być używany w naszej aplikacji, ale najpierw wyjaśnijmy, czym dokładnie jest RegExp.

     

    Wyrażenie regularne (w skrócie RegExp) to specjalny ciąg tekstowy opisujący wzorzec wyszukiwania. Wyrażenia regularne można traktować jak ulepszone symbole wieloznaczne.

     

    Prawdopodobnie znasz znaki wieloznaczne, takie jak * .txt, aby znaleźć wszystkie pliki tekstowe w menedżerze plików. RegExp działa na tych samych zasadach, ale może zrobić o wiele więcej.

     

    Potrzeba trochę praktyki, aby opanować RegExp, ale kiedy już się to zrobi, jest bardzo przydatny. Osobom zainteresowanym nauką wyrażeń regularnych mogę polecić ten samouczek.

     

    Warto również przetestować RegExp przed jego wdrożeniem. Istnieje wiele narzędzi online, aby to zrobić. Narzędzie, którego używam, nazywa się Rebular.

     

    Przejdźmy zatem do prawdziwych przykładów, aby zobaczyć, jak RegExp może być pomocny w optymalizacji kanałów.

     


    Przykład 1

     

    Wyobraź sobie, że musisz utworzyć pole „kolor” dla pliku danych w Zakupach Google. W Twoim sklepie nie ma pola koloru, ale wiesz, że wszystkie tytuły Twoich produktów kończą się nazwą koloru (np. Buty Adidas Snova Glide 5 do biegania w kolorze zielonym).

     

    Najlepszym sposobem poradzenia sobie z tą sytuacją jest odwzorowanie koloru na podstawie nazwy i użycie dodatkowej reguły zastępowania za pomocą RegExp w następujący sposób:

     

     

    DataFeedWatch Regular Expression

     

    Jak to zrobić:

    1. podziel każdą nazwę na dwie grupy:
      grupa 1 - wszystko oprócz ostatniego słowa reprezentowanego przez (.*) gdzie

      dowolny pojedynczy znak występujący w dowolnej liczbie grup czasowych 2 - ostatnie słowo reprezentowane przez (s [^ s] +) gdzie

      s => dowolny znak spacji

      [^ s] + => dowolny pojedynczy znak z wyjątkiem białych znaków pojawiających się co najmniej raz
    2. Zastąp istniejącą wartość, którą można opisać jako (.*)(s[^s]+) nową wartością, którą jest grupa 2 (w taksonomii RegExp zapisanej jako 2 $)

     

    Wynik tego mapowania dla „Adidas Mens Snova Glide 5 Buty do biegania zielony” byłby „Zielony”.

     


    Przykład 2

     

    Wyobraź sobie, że tworzysz pole ceny dla kanału, który akceptuje 2 kropki dziesiętne (np. 12,45), a twoje ceny mają 4 (12,4500). Ponownie przydatna jest reguła zastępowania RegExp. Aby naprawić format, musimy ustawić go w następujący sposób:

     

    datafeedwatch-regexp

     

    Podobnie jak w poprzednim przykładzie ta reguła:

    1. dzieli każdą cenę na 2 grupy:
      grupa 1 – wszystko oprócz dwóch ostatnich miejsc po przecinku ([0-9]+.[0-9]{2})  gdzie

      [0-9]+ => dowolna liczba całkowita

      . => znak kropki
      ([0-9]{2} =>  dowolna 2-cyfrowa grupa liczb 2 - ostatnie dwa miejsca po przecinku ([0-9]{2})
    2. zastępuje istniejącą wartość, którą można opisać jako ([0-9]+.[0-9]{2})([0-9]{2}) nową wartością, którą jest grupa 1 (1 $)

    Wynik tego mapowania dla 12,4500 to 12,45.

    Należy pamiętać, że to mapowanie nie zaokrągla ceny do dwóch miejsc po przecinku, ale zamiast tego odcina dwie ostatnie cyfry.

     


    Przykład 3

     

    Załóżmy, że chcesz ustawić typ produktu dla Zakupów Google jako główną kategorię swoich produktów (np. Części samochodowe), ale w systemie masz tylko ścieżki całej kategorii (np. Części samochodowe> BMW> 320i> 2013).

     

    Musisz tutaj usunąć wszystko, zaczynając od „>”. Zasada, która to obejmuje, wygląda następująco:

     

    datafeedwatch-regexp-optymalizacja

     

    gdzie
    s>.* => dowolny pojedynczy znak, po którym następuje „>”, po którym następuje dowolny pojedynczy znak pojawiający się dowolną liczbę razy.

    Wynikiem tego mapowania „Części samochodowe> BMW> 320i> 2013” byłyby „Części samochodowe”.

     


    Przykład 4

     

    W ostatnim przykładzie wyobraź sobie kanał, który wymaga kodów UPC, ale w Twoim systemie nie wszystkie produkty mają kody UPC, a te, które posiadasz, nie mają właściwego formatu (12 cyfr).

     

    Jeśli wyślesz plik danych z produktami, dla których kody UPC są puste lub niewłaściwe, cały plik danych może zostać odrzucony. To, co musisz zrobić, to wykluczyć te produkty. Można to osiągnąć za pomocą pojedynczej reguły wykluczania czyli RegExp.

     

    Data Feed Optimization with RegExp

     

    Dotyczy to tylko produktów, dla których UPC jest dokładnie 12-cyfrową liczbą. Innymi słowy, uwzględniaj produkty tylko wtedy, gdy UPC pasuje do wyrażenia regularnego ^[0-9]{12}$

    To tylko kilka niezliczonych przykładów użycia RegExp. Zasadą jest, że gdy istnieje jakieś skomplikowane mapowanie, RegExp będzie najlepszym rozwiązaniem.

     

    Jeśli masz jakieś problemy z mapowaniem, opisz je w komentarzach, a ja postaram się znaleźć odpowiedni RegExp, aby sobie z tym poradzić (jeśli to możliwe).


    New Call-to-action

    Written by Mateusz Miodek