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

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
 

Komentáře

Správné odpovědi:
  1. 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
  2. \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
  3. \S+$ nebo [^\s]+$
  4. ^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
  5. ^\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
  6. \.$ 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
  7. \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}
  8. ^[\S\s]{0,255}$ tedy jakékoliv znaky (písmena a čísla nebo mezery) se budou opakovat nula až 255 krát 
  9. \1
  10. ^[^\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)/Středa, 16. Listopad 2016 - 15:50

Přidat komentář