Odstranění duplicitních výrobců v názvu

Pomocí regulárních výrazů můžete v Mergadu snadno odstranit duplicitní výskyt nějakého textu nebo duplicitních slov. Taková funkce vám může ušetřit hodiny času, oproti manuálním úpravám textu.

Problém:

…v názvech některých produktů (v PRODUCT i PRODUCTNAME) máme uvedeného výrobce duplicitně. Není vždy hned 2x po sobě, ale mezi duplicitním výskytem je občas i nějaký další text. Jak duplicitní výskyt odstranit?
Příklady názvů produktů s duplicitním výrobcem:

  • výrobce v elementu MANUFACTURER je: Weingut Robert Weil
  • v PRODUCTNAME je: Weingut Robert Weil Riesling Weingut Robert Weil Qualitätswein trocken, 2015 0,75 L

Řešení:
Naštěstí je název výrobce ve feedu posílaný v elementu MANUFACTURER a díky tomu bude odstranění duplicitního výskytu z PRODUCT či PRODUCTNAME velmi snadné.

Použijeme pravidlo typu Najít a nahradit, kde v poli pro hledání použijeme regulární výraz obsahující tzv. referenci, kdy se na konkrétní část regulárního výrazu odvoláváme s použitím pořadového čísla, například:

  • \1 … odvoláváme se na 1. část regulárního výrazu
  • \2 … odvoláváme se na 2. část regulárního výrazu
  • atd.

V pravidle, v poli Najít, použijeme následující regulární výraz:

^(.*)(%MANUFACTURER%)(.*)\2(.*)$

Tím jsme si text názvu produktu rozdělili na několik částí. Použitá reference \2 se odvolává na 2. část regulárního výrazu a tam je proměnná %MANUFACTURER%. Regulární výraz by se dal laicky popsat jako:

jakýkoliv text od začátku řetězce → název výrobce → jakýkoliv text → znovu název výrobce → jakýkoliv text do konce řetězce

Do pole Nahradit už jen poskládáme ty části, které chceme zachovat:
\1\2\3\4

Tip: nezapomeňte v pravidle zatrhnout checkbox, že chcete hledat jako “Regulární výraz”. :wink:

Ukázka pravidla:

Ukázka, jakému textu regulární výraz vyhovuje:

1 Like

Tak to funguje, ale nechává to po sobě dvě mezery.

Weingut Robert Weil Riesling__Qualitätswein trocken, 2015 0,75 L

2 Likes

To se dá v reguláru zohlednit přidáním \s hned za MANUFACTURER takto:

^(.*)(%MANUFACTURER%\s)(.*)\2(.*)$

Znak \s představuje v tomto případě 1 mezeru, která musí být za oběma výskyty názvu výrobce v textu.

Pokud to nebude někomu vyhovovat, stačí si přidat druhé pravidlo, kterým se jen nahradí dvě mezery za jednu. :wink:

3 Likes