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.
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:
Jak to zrobić:
(.*)
gdziedowolny 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(.*)(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”.
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:
Podobnie jak w poprzednim przykładzie ta reguła:
([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})
([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.
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:
gdzies>.*
=> 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”.
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.
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).