Vyhledáváme části elementu CATEGORYTEXT, třeba text za posledním svislítkem

Na naši technickou podporu chodí dotazy, jaké použít regulární výrazy pro vyhledání textu v elementu s kategorií (např. CATEGORYTEXT), který se nachází na určité pozici, např. za posledním svislítkem | (pokud je znak svislítko | oddělovačem úrovní kategorií). Pojďme se podívat na pár příkladů:

I. Jak najít text za posledním svislítkem:

  • nejjednodušší verze regulárního výrazu je hledat cokoliv, co není svislítko na konci řetězce: [^\|]+$

  • příklad co se najde:

  • :exclamation:znak svislítko je sám o sobě regulárním výrazem pro “nebo” a pokud jej chceme hledat doslovně, jako obyčejný znak |, musíme jej v regulárním výrazu escapovat: \|

  • někomu třeba může vadit mezera na začátku nalezeného textu, ale ta jde v Mergadu odstranit jednoduchým pravidlem typu Najít a nahradit, kdy se do pole Najít zadá: ^\s+, zatrhne se hledání jako regulární výraz a pole Nahradit se nechá prázdné. :slight_smile:

  • jiné řešení, jak mezeru na začátku vyhledaného textu vůbec nemít, je rozdělit si text na části, z nichž použijeme jen tu poslední část: ukázka zde

  • :question: Jak najít text za posledním oddělovačem úrovní kategorií, pokud tam není svislítko, ale např. ostrá závorka >?
    Stačí jen v regulárním výrazu výše nahradit znak \| za > :wink:

II. Jak najít text za posledním svislítkem včetně toho svislítka:

III. Jak najít text na začátku, před prvním svislítkem:

IV. Jak najít text na začátku, před prvním svislítkem včetně toho svislítka:

V. Jak najít text uprostřed, mezi prvním a druhým svislítkem?


:question: Napadá vás ještě nějaká varianta, kterou chcete vyhledat? Napište ji v komentáři pod tímto příspěvkem.

Související témata na našem fóru:

1 Like