Závěr seriálu o regulárních výrazech — projdete testem?

Článek zveřejněn 16. 11. 2016
| 2 minuty čtení
Závěrečný díl seriálu tak věnujeme shrnutí a krátkému testíku. K regulárním výrazům ještě považujeme za důležité říct, že jde o široké a obsáhlé téma – v našem seriálu jsme popsali jen několik málo způsobů jejich využití. To bylo ostatně také naším cílem – nastínit vám možnosti jejich použití v Mergadu a motivovat vás k jejich používání.
 
Vaše další regulární cesty mohou vést třeba směrem, který jsme nastínili v posledním příkladu v minulém díle seriálu, kdy jsme řešili duplicity v názvech. Při práci s jednotlivými skupinami – částmi regulárního výrazu, na které se později odkazujeme, jde o zpětné odkazy (backreferences).
 
Na závěr ještě přidáváme pár zdrojů, ze kterých se dá při práci s regulárními výrazy vycházet:
 
 
A teď slíbený test, ve kterém můžete svoje znalosti regulárních výrazů vyzkoušet. Jako nápověda vám můžou sloužit předchozí články (1. díl, 2. díl, 3. díl, 4. díl). Zkoušet si můžete tyto výrazy právě na testovací stránce Regex 101. Tedy – směle do toho!
 
Vytvořte takový regulární výraz, kterým:
 
1) najdete všechna slova delší, než 5 znaků
2) najdete trojciferné číslo v řetězci 
3) najdete poslední slovo na konci textového řetězce
4) najdete text, který začíná slovem “https://”
5) najdete text, který neobsahuje žádné bílé znaky (např. mezery) 
6) zkontrolujete, že poslední znak v řetězci je tečka .
7) zkontrolujete formát telefonního čísla, tj. 9 čísel, oddělené mezerami po třech číslech (123 456 789)
8) zkontrolujete, že celý řetězec je maximálně 255 znaků dlouhý
9) odkážete na první skupinu z regulárního řetězce
10) zkontrolujete, že text neobsahuje čísla, bílé znaky, ani znak “@”
 
Správné odpovědi najdete v komentářích pod článkem!
 
Pokud byste chtěli (nejen) s regulárními výrazy poradit, klidně se obraťte na náš e‑mail nebo napište do fóra.
 
Sledujte všechny díly seriálu o regulárních výrazech:
 
Nebo navštivte náš praktický workshop, kde vysvětlíme základní značky používané v regulárních výrazech, ukážeme, jak regulární výrazy tvořit, kde je lze použít v Mergadu i mimo něj. Naučíte se základy, porozumíte principu a zjistíte, že regulární výrazy nejsou vůbec složité
 
Napsal / Luděk Volejník / 16. 11. 2016

Luděk pomáhá zajistit Mergadovu českou podporu. V prostředí eshopů a internetového marketingu se pohybuje přes 16 let, aktuálně ho nejvíc baví PrestaShop a vše kolem něj. Když zrovna nepracuje pro Mergado, cvičí gymnastiku v Sokole nebo skáče přes překážky na biketrialovém kole.

Komentáře

Správné odpovědi:např. \S{6,} nebo [^\s]{6,} (jde více způsoby), kdybychom hledali slova delší nebo rovna 5 znakům, pak by ve složených závorkách bylo číslo 5\d{3} nebo [0 – 9][0 – 9][0 – 9] nebo \d\d\d zachytí 3 a více ciferná čísla, pokud potřebujeme přesný počet cifer, musíme to nějak ohraničit, např. ^\d{3}$ jako celý řetězec nebo \s\d{3}\s pokud předpokládáme, že je číslo obklopeno mezerami nebo použijeme značku \b pro vymezení hranice slova a v našem seriálu se na ni nedostalo místa: \b\d{3}\b\S+$ nebo [^\s]+$^https:\/\/ protože lomítka jsou v rámci regulárních výrazů speciální znaky, je třeba je ošetřit zpětným lomítkem^\S+$ nebo ^[^\s]+$ prostě od začátku do konce řetězce nesmí být mezera, proto využijeme značek pro začátek ^ a konec $ řetězce\.$ protože je tečka speciální znak, který má v regulárních výrazech konkrétní funkci, je třeba ji doplnit o zpětné lomítko, pokud ji chceme vyhledat jako opravdový znak tečky\d{3}\s\d{3}\s\d{3} nebo kratší zápis (\d{3}\s*){3} by teoreticky stačil, není zde však ošetřen výskyt víceciferných čísel, takže stejně jako v odpovědi u bodu 2) použijeme značky pro hranice a výsledkem bude (\b\d{3}\b\s*){3}^[\S\s]{0,255}$ tedy jakékoliv znaky (písmena a čísla nebo mezery) se budou opakovat nula až 255 krát \1^[^\d\s@]+$ tedy od začátku do konce řetězce může být cokoliv, co není číslo nebo bílý znak nebo znak @
Luděk Volejník (admin) / 16. 11. 2016 - 15:50

Možná bych u té 1. spíš použil výraz \p{L}{6,}. Výraz \S{6,} by totiž mohl pojmout i části, kde je ve slově třeba tečka bez mezer a jiné.

Josef Kočí / 10. 03. 2022 - 19:09

Přidat nový komentář

Obsah tohoto pole je soukromý a nebude veřejně zobrazen.
Přidáním komentáře souhlasíte se zpracováním osobních údajů.