V pravidle, v poli Najít, použijeme následující regulární výraz:
\b(\w+)\s+\1\b
Poznámka:
\b určuje hranice slov a výhody této regulární značky jsou zmíněny v příspěvku Odstranění velikostí z názvu produktu. Zde ji musíme použít, aby nám regulární výraz fungoval pro samostatná slova.
\s+ představuje jednu nebo více mezer v textu (nejen mezery, ale všechny “bílé” znaky, jako třeba tabulátory, apod.)
Do pole Nahradit uvedeme opět pomocí reference jen tu první část, kterou chceme zachovat: \1
Ahoj, ale co když je tam těch slov přebytečných více?
Na vstupu v productname - Korda tričko Kore Digital Camo TK Black T-Shirt Korda tričko Kore Digital Camo TK Black T-Shirt vel. XXXL (KCL268)
a do výstupu bych potřebovala dostat jen: Korda tričko Kore Digital Camo TK Black T-Shirt vel. XXXL (KCL268)
Pokud by se někomu hodilo, dávám sem ještě možné vylepšení regulárního výrazu:
\b(.{5,})\s*\1\b
Vylepšení spočívá v tom, že se budou hledat jenom duplicitní texty dlouhé 5 a více znaků. Tohle se může hodit v případě, že máte v textu třeba rozměry, velikosti apod. kdy by se mohly z milimetrů (mm) stát metry (m) a to by nemuselo být ku prospěchu. Proto se tyto krátké texty nebdou brát v potaz.
Ukázka jak tento vylepšený regulární výraz funguje:
nezapomeňte vždy výsledek po odstranění duplicit zkontrolovat, zda nedochází i k nežádoucímu nahrazení textu. Pokud by se tak stalo, je třeba regulární výraz upravit, případně upravit samotný text nebo problematické produkty vyloučit z výběru, na který aplikujete pravidlo pro odstranění duplicit.
Ahoj Luďku, bohužel mi tyto regulární výrazy na můj text nefungují
Mám třeba takový - Alien Baits umělá kukuřice neutrální Alien Baits umělá kukuřice neutrální Fluoro Pink (růžová) (AB011)
a potřebovala bych z toho dostat jen: Alien Baits umělá kukuřice neutrální Fluoro Pink (růžová) (AB011) - element manufacturer mám naplněn
Ukázkové pravidlo počítá pouze s delšími slovy pěti znaků a reference pro nahradit by měla obsahovat \ místo $. Na Váš příklady by měl fungovat následující výraz.
Moc děkuji, zatím to vypadá, že funguje - zjišťuji tedy další produkty, kde mi tento výraz bohužel smaže gramáž
Garda Broky Carp Shots Camou Garda Broky Carp Shots Camou Green 0,9 g/20 ks (GAR1403)
Garda Broky Carp Shots Camou Green 0,9 /20 ks (GAR1403)
Ano, protože to regulárnímu výrazu vyhovuje… Já bych se doporučil vrátit k tomu podle mě nejvíc univerzálnímu regulárnímu výrazu, který v tomto vlákně najdete a to byl tento:
Potom by se mohl hodit regulární výraz: (.{5,})(.+\s)?\1\b
Nahradíme jej za: \1\2
Protože s ním vše funguje jak má a odstraňuje se jenom to, co se má odstranit, viz ukázka zde nebo screenshot:
Zdravím, aké riešenie by ste mi odporučili na tento špecifický problém:
Mám duplicitné názvy v productname viz. príklad:
Tu sa mi duplicity podarili odstrániť
*Foto1
Potom som dalším pravidlom odstránil aj tento typ duplicít(nakolko prvým pravidlom to na tieto nefungovalo):
*Foto2
Ale zároveň to odstránilo aj 3x za sebou vyskytujúce sa slovo ktoré je potrebné nakolko označuje rozmer:
*Foto3
A zároveň to robí problém aj pri názvoch ako sú tieto ( 2 rozmery rovnaké a tretí rozmer je iný):
*Foto4
Pozn.: pro jistotu, aby se nenahradilo něco nežádoucího, můžete pravidlo aplikovat na výběr produktů, který bude obsahovat jen produkty co mají takovéto duplicity, tj, pro podmínku výběru použijete např.: [PRODUCTNAME] ~ "(.{5,})\s*\1"