- [Case Studies](/kategorie/case-studies)
- [E‑commerce tipy](/kategorie/e-commerce-tipy)
- [E‑shopová řešení a platformy](/kategorie/e-shopova-reseni-a-platformy)
- [Mergado Pack](/kategorie/mergado-pack)
- [Mergado tipy](/kategorie/mergado-tipy)
- [Novinky v Mergadu](/kategorie/novinky-v-mergadu)
- [Novinky ze srovnávačů](/kategorie/novinky-ze-srovnavacu)
- [Pracujeme s Mergadem](/kategorie/pracujeme-s-mergadem)
- [Rozhovory](/kategorie/rozhovory)
- [Rozšíření](/kategorie/aplikace)
- [S Mergadem do zahraničí](/kategorie/s-mergadem-do-zahranici)
- [Ze života Mergada](/kategorie/ze-zivota-mergada)
 



 

 1. [  Úvod  ](/)
2. [     Blog  ](/blog)
3. [     Pracujeme s Mergadem  ](/kategorie/pracujeme-s-mergadem)
4. <a class="flex items-center gap-2 hover:underline" href="" itemid="" itemprop="item" itemscope="" itemtype="https://schema.org/Thing">    **Jak na regulární výrazy v Mergadu – II. díl** </a>
 
  

 

#  **Jak na regulární výrazy v Mergadu – II. díl** 

 

 

 [    ![](https://www.mergado.cz/sites/default/files/perm/image/luda_0.png)   Luděk Volejník  ](/blog/ludek-volejnik) [Pracujeme s Mergadem](/kategorie/pracujeme-s-mergadem) 

25. 10. 2016

3 minuty čtení

 

 

 

 

 

  ![](https://www.mergado.cz/sites/default/files/field/image/clanok-regexp-vol.2.png)  

V [úvodním díle](http://www.mergado.cz/regularni-vyrazy-1) naší minisérie o regulárních výrazech jsme se věnovali tomu, co to vůbec jsou regulární výrazy a vysvětlili jsme používání některých základních značek. Nyní na tento úvod navážeme a představíme si další značky a jejich praktické využití. 

 

 

 
                function tableOfContents() {
                  return {
                    headings_menu: [],
                    heading_active: '', // Added to track the active section
                    shouldBeSticky: false,

                    generateToC() {
                      const headings = document.querySelectorAll('.js-article-full-headings h2, .js-article-full-headings h3');
                      let headingMap = {};

                      headings.forEach((heading) => { // Use an arrow function to maintain `this` context
                        // Normalize heading text to remove diacritics, then replace non-alphanumeric characters with dashes
                        var normalizedText = heading.textContent.normalize("NFD").replace(/[\u0300-\u036f]/g, ""); // Remove diacritics
                        var id = heading.id ? heading.id : normalizedText.trim().toLowerCase()
                          .split(' ').join('-').replace(/[^a-z0-9\-]/ig, ''); // Updated regex to replace non-alphanumeric characters
                        headingMap[id] = headingMap[id] !== undefined ? ++headingMap[id] : 0;

                        // Use the updated `id` with diacritics removed for the heading id and the TOC
                        const finalId = headingMap[id] ? `${id}-${headingMap[id]}` : id;
                        this.headings_menu.push({
                          id: finalId,
                          title: heading.textContent,
                          level: heading.tagName.toLowerCase(), // Track heading level
                          active: false, // Initially set active to false
                        });
                        heading.id = finalId;
                      });
                    },

                    checkStickyNeeded() {
                      const ul = this.$el.querySelector('ul');
                      if (ul) {
                        this.shouldBeSticky = ul.scrollHeight < window.innerHeight;
                      }
                    },

                    setActiveHeading() {
                      // disabled not working with active state on click
                      // add @scroll.window="setActiveHeading()" to the parent div

                      // const headings = document.querySelectorAll('.js-article-full-headings h2');
                      // let activeHeading = '';
                      // let closestHeadingDistance = Infinity;

                      // headings.forEach((heading) => {
                      //   const rect = heading.getBoundingClientRect();
                      //   const offset = rect.top - window.innerHeight / 2; // Consider heading in the middle of the screen as active

                      //   if (offset < 0 && Math.abs(offset) < closestHeadingDistance) {
                      //     activeHeading = heading.id;
                      //     closestHeadingDistance = Math.abs(offset);
                      //   }
                      // });

                      // // Update the active state in headings_menu
                      // if (activeHeading !== this.heading_active) {
                      //   this.headings_menu = this.headings_menu.map(item => ({
                      //     ...item,
                      //     active: item.id === activeHeading,
                      //   }));
                      //   this.heading_active = activeHeading;

                      // }
                    },

                    setActiveItem(clickedId) {
                      this.headings_menu.forEach(item => {
                        item.active = (item.id === clickedId);
                      });
                      this.heading_active = clickedId; // Optionally update the heading_active property if used
                    },
                  };
                }
               1. <a :class="{ 'border-r-[3px] border-secondary': item.active, 'text-sm': item.level === 'h3' }" :href="'#' + item.id" class="inline-block text-balance hover:underline p-0.5 pr-3">  — </a>
  



 

## Závorky

### Hranaté závorky \[\]

Hranaté závorky pomohou s výběrem takového textu, ve kterém se vyskytuje jeden ze skupiny znaků, kterou zadáme, tedy například:

- Chceme najít všechny produkty, které mají v názvu **nějaké číslo,** použijeme regulární výraz **\[0 – 9\]**   
    (alternativou je potom použití výrazu **\\d**, který v regulárních výrazech představuje jakoukoli číslici)**,** tedy: **PRODUCTNAME** *~obsahuje reg.výraz* **\[0 – 9\]** nebo   
    **PRODUCTNAME** *~obsahuje reg.výraz* **\\d**
- Hledáme všechny produkty, které mají v názvu **dvouciferné číslo,** použijeme regulární výraz **\[0 – 9\]\[0 – 9\]**  
    (nebo to samé zajistí použití: **\\d\\d**)
- Chceme najít všechny produkty, které mají v názvu nějaké **písmeno z následující množiny** písmen: b, f, l, m, použijeme regulární výraz **\[bflm\]**

![](/sites/default/files/users/hranate_zavorky_1.png)

### Kulaté závorky ()

Kulaté závorky umožňují vyhledávat v řetězci **různé tvary jednoho slova**, přičemž vyhledají všechny části řetězce, ve kterých se vyskytuje buď část před závorkou nebo celý výraz.

- Chceme najít všechny produkty, které mají v **názvu pneu nebo pneumatika,** použijeme regulární výraz **pneu(matika)?** (vysvětlení znaku **?** jsme uvedli v [minulém článku](http://www.mergado.cz/regularni-vyrazy-1))

![](/sites/default/files/users/kulate_zavorky_1.png)

### Složené závorky {}

Složené závorky patří mezi kvantifikátory – určují tedy, kolikrát se dané písmeno nebo řetězec písmen v hledaném textu vyskytuje. Například:

- Chceme najít všechny produkty, které mají v názvu **písmeno A třikrát za sebou**, použijeme regulární výraz **A{3}**
- Chceme najít všechny produkty, které mají v názvu **písmeno A nejméně jednou**, **maximálně dvakrát** za sebou, použijeme regulární výraz **A{1,2}**
- Chceme najít všechny produkty, které mají v názvu **písmeno A dva a vícekrát za sebou,** použijeme regulární výraz **A{2,}** - například u módy tak můžeme vytvořit výběr pro největší velikosti (XXL a větší)

![](/sites/default/files/users/slozene_zavorky_0.png)

## Hraniční značky 

### Stříška ^ 

Pomocí této značky vyhledáváme **na začátku** řetězce:

- Chceme najít všechny produkty, jejichž **název začíná číslem** (tj. prvním znakem v názvu produktu je číslo), použijeme regulární výraz **^\[0 – 9\]** nebo **^\\d**
- Chceme najít všechny produkty, jejichž **název začíná mezerou** (tj. prvním znakem v názvu produktu je mezera), použijeme regulární výraz **^\\s**
- Chceme najít všechny produkty, jejichž název **začíná slovem Novinka** (tj. v názvu produktu je hned na začátku slovo “Novinka”), použijeme regulární výraz **^Novinka**

![](/sites/default/files/users/striska_0.png)

### Dolar $ 

S pomocí “dolaru” vyhledáváme požadované znaky **na konci** řetězce:

- Chceme najít všechny produkty, jejichž **název končí číslem** (tj. posledním znakem v názvu produktu je číslo), použijeme regulární výraz **\[0 – 9\]$** nebo **\\d$**
- Chceme najít všechny produkty, jejichž **název končí mezerou** (tj. posledním znakem v názvu produktu je mezera), použijeme regulární výraz **\\s$**
- Chceme najít všechny produkty, jejichž **název končí slovem Novinka** (tj. v názvu produktu je úplně na konci “Novinka”), použijeme regulární výraz **Novinka$**

Tip: Dolar na klávesnici napíšete např. přes klávesovou zkratku *AltGr* a *ů*, více způsobů najdete pod tímto [odkazem](http://znakynaklavesnici.cz/znak-dolaru/).

![](/sites/default/files/users/string_0.png)

### Svislítko |

Tato značka **funguje podobně jako operátor OR**, česky bychom řekli “nebo” — vyhledá tedy takové položky, ve kterých se vyskytuje jeden nebo druhý (třetí, čtvrtý, pátý…) ze zadaných výrazů, tedy:

- pokud chceme najít všechny produkty, jejichž název **obsahuje velikost nebo objem** (tj. kdekoliv v názvu produktu bude jeden nebo druhý hledaný výraz), použijeme regulární výraz **Velikost|Objem**

![](/sites/default/files/users/svislitko_1.png)

### Znak *s* se zpětným lomítkem \\s

Pomocí tohoto znaku dokážeme **vyhledávat**, a následně třeba odstranit **mezery** (a další bílé znaky jakou jsou tabulátory nebo nezalomitelné mezery), může se nám tedy hodit při:

- Hledání všech produktů, jejichž název obsahuje **konkrétní víceslovný text:** “Objem&lt;mezera&gt;100&lt;mezera&gt;ml”. K tomu použijeme regulární výraz **Objem\\s100\\sml**
- Odhalování **právě dvou mezer vedle sebe**, kdy použijeme regulární výraz **\\s\\s**

K vyhledávání různého počtu mezer je potom **efektivnější** použít výraz s kvantifikátorem **plus** ([viz předchozí článek](http://mergado.cz/regularni-vyrazy-1)) **\\s+**, který odhalí minimálně jednu a maximálně nekonečno mezer za sebou.

![](/sites/default/files/users/zpetne_lomitko.png)

**Tip:** V Mergadu u regulárních výrazů **nezáleží na tom, zda hledáte text zadaný malými nebo velkými písmeny**. Když budete hledat slovo “Velikost”, najde se: “Velikost”, “velikost” nebo třeba i “VeLiKoSt”. V dalším díle seriálu se už můžete těšit na konkrétní kombinace a řešení složitějších výběrů v Mergadu pomocí regulárních výrazů.



 

- [  Regulární výrazy ](/tema/regularni-vyrazy)
- [  Tipy pro práci s Mergadem ](/tema/tipy-pro-praci-s-mergadem)
- [  Mergado ](/tema/mergado)
 
 [    ![](https://www.mergado.cz/sites/default/files/perm/image/luda_0.png)  ](/blog/ludek-volejnik)###  [ Luděk Volejník ](/blog/ludek-volejnik) 

Senior konzultant Mergada Luďek působil **v oblasti e‑commerce přes 15 let**. Ostřílený support master a lektor vás prováděl zákoutími Mergada i světem regulárních výrazů. Na svém kontě má **stovky vyškolených uživatelů** Mergada, kteří se stali uznávanými odborníky na feed marketing, PPC a SEO.

 

 

 

 

 

 

 

 

 

## Mohlo by vás *zajímat*

 

 [    ![](https://www.mergado.cz/sites/default/files/perm/image/heureka_google_rec.jpg)  

### Heureka recenze do Google recenzí: nový postup krok za krokem

 

 ](/blog/heureka-recenze-do-google-recenzi) 

 [    ![](https://www.mergado.cz/sites/default/files/perm/image/shoptet-shopify-prevod.jpg)  

### Jak jsme s Mergadem převedli e‑shop ze Shoptetu na Shopify: kompletní migrace bez ztráty dat

 

 ](/blog/jak-jsme-s-mergadem-prevedli-e-shop-ze-shoptetu-na-shopify-kompletni-migrace-bez-ztraty-dat) 

 [    ![nastavení agenturních účtů](https://www.mergado.cz/sites/default/files/perm/image/new-nahladovka-na-blog-1200-x-628-px-37.png)  

### Jak nastavovat uživatelské účty agenturních pracovníků v Mergadu

 

 ](/blog/opravneni-uzivatelskych-uctu-pro-agentury) 

 

 

 

## Ať vám *nic neunikne*

 Přihlašte se do našeho newsletteru 

   

       

   Přihlášením souhlasíte, že vaše údaje zpracujeme v souladu s podmínkami o [ochraně osobních údajů](/prohlaseni-o-cookies). 

  Děkujeme, úspěšně jste se připojili k našemu seznamu odběratelů. 

 

 

 
      function ml_webform_success_5807248() {
        var r = ml_jQuery || jQuery
        r('.ml-subscribe-form-5807248 .row-success').show(), r('.ml-subscribe-form-5807248 .row-form').hide()
      }