Mateusz Miodek
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:
Jak to zrobić:
- 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 - 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:
Podobnie jak w poprzednim przykładzie ta reguła:
- 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})
- 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:
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”.
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.
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).