Záver seriálu o regulárnych výrazov - prejdete testom?

Záverečný diel seriálu tak venujeme zhrnutiu a krátkemu testíku. K regulárnym výrazom ešte považujeme za dôležité povedať, že ide o širokú a obsiahlu tému - v našom seriáli sme popísali len niekoľko málo spôsobov ich využitia. To bolo napokon aj naším cieľom - načrtnúť vám možnosti ich použitia v Mergade a motivovať vás k ich používaniu.

Vaše ďalšie regulárne cesty môžu viesť napríklad smerom, ktorý sme načrtli v poslednom príklade v minulom diele seriálu, kedy sme riešili duplicity v názvoch. Pri práci s jednotlivými skupinami - časťami regulárneho výrazu, na ktoré sa neskôr odkazujeme, ide o spätné odkazy (backreferences).

Na záver ešte pridávame pár zdrojov, z ktorých sa dá pri práci s regulárnymi výrazmi vychádzať:

A teraz sľúbený test, v ktorom môžete svoje vedomosti regulárnych výrazov vyskúšať. Ako nápoveda vám môžu slúžiť predchádzajúce články (1. diel, 2. diel, 3. diel, 4. diel). Tieto výrazy si môžete skúšať práve na testovacej stránke Regex 101. Teda - smelo do toho!

Vytvorte taký regulárny výraz, ktorým:

1) nájdete všetky slová dlhšie, než 5 znakov
2) nájdete trojciferné číslo v reťazci
3) nájdete posledné slovo na konci textového reťazca
4) nájdete text, ktorý sa začína slovom "https://"
5) nájdete text, ktorý neobsahuje žiadne biele znaky (napr. medzery)
6) skontrolujete, že posledný znak v reťazci je bodka
7) skontrolujete formát telefónneho čísla, tj. 9 čísel, oddelené medzerami po troch číslach (123 456 789)
8) skontrolujete, že celý reťazec je maximálne 255 znakov dlhý
9) odkážete na prvú skupinu z regulárneho reťazca
10) skontrolujete, že text neobsahuje čísla, biele znaky, ani znak "@"
 
Správne odpovede nájdete v komentároch pod článkom!
 
Ak by ste chceli poradiť (nielen) s regulárnymi výrazmi, pokojne sa obráťte na náš e-mail alebo napíšte do fóra.

Komentáre

  1. napr. \S{6,} alebo [^\s]{6,} (je možné viacerými spôsobmi), keby sme hľadali slová dlhšie alebo sa rovné 5 znakom, potom by v zložených zátvorkách bolo číslo 5
  2. \D{3} alebo [0-9][0-9][0-9] alebo \d\d\d zachytí 3 a viac ciferná čísla, ak potrebujeme presný počet cifier, musíme to nejako ohraničiť, napr. ^\d{3}$ ako celý reťazec alebo \s\d{3}\s ak predpokladáme, že je číslo obklopené medzerami alebo použijeme značku \b pre vymedzenie hranice slova a v našom seriáli sa na ňu nedostalo miesta: \b\d{3}\b
  3. \S+$ alebo [^\s]+$
  4. ^Https:\/\/ pretože lomítka sú v rámci regulárnych výrazov špeciálne znaky, treba ich ošetriť spätným lomítkom
  5. ^\S+$ alebo ^[^\s]+$ jednoducho od začiatku do konca reťazca nesmie byť medzera, preto využijeme značky pre začiatok ^ a koniec $ reťazca
  6. \.$ Pretože je bodka špeciálny znak, ktorý má v regulárnych výrazoch konkrétnu funkciu, je potrebné ju doplniť o spätné lomítko, pokiaľ ju chceme vyhľadať ako naozajstný znak bodky
  7. \D{3}\s\d{3}\s\d{3} alebo kratší zápis (\d{3}\s*){3} by teoreticky stačil, nie je tu však ošetrený výskyt viacceciferných čísel, takže rovnako ako v odpovedi v bode 2) použijeme značky pre hranice a výsledkom bude (\b\d{3}\b\s*){3}
  8. ^[\S\s]{0,255}$ teda akékoľvek znaky (písmená a čísla alebo medzery) sa budú opakovať nula až 255 krát
  9. \1
  10. ^[^\D\s@]+$ teda od začiatku do konca reťazca môže byť čokoľvek, čo nie je číslo alebo biely znak alebo znak @
Daniel Czetner (admin)/utorok, 4. júl 2017 - 11:58

Pridať nový komentár