Regulárne výrazy

V škole máme zadanie zistiť a popísať čo robia nasledovné regulárne výrazy:
1. ^[A-Za-z]+\s[A-Za-z]+$
2. ^[A-Za-z0-9]+@[A-Za-z]+.[A-Za-z]{2,}$

Viete mi stým pomôcť ?

2 відповідей
Ahoj Tomáš


Regulárny výraz: ^[A-Za-z]+\s[A-Za-z]+$

Popis: Tento regulárny výraz slúži na overenie, či reťazec obsahuje práve dva slová oddelené medzerou a neobsahuje žiadne ďalšie znaky.

^ označuje začiatok reťazca.
[A-Za-z]+ znamená, že reťazec musí obsahovať jedno alebo viacero veľkých písmen alebo malých písmen.
\s je špeciálny znak, ktorý reprezentuje medzeru.
[A-Za-z]+ označuje, že reťazec za medzerou musí obsahovať jedno alebo viacero veľkých písmen alebo malých písmen.
$ označuje koniec reťazca.
Tento regulárny výraz je užitočný na rýchlu validáciu mena, kde sa predpokladá, že meno bude skladané z dvoch slov oddelených medzerou. Napríklad overí, či reťazec "John Doe" alebo "Jane Smith" spĺňa tento formát. Používa sa v rôznych aplikáciách a systémoch, ktoré vyžadujú vstup v podobe mena a chcú sa uistiť, že je zadané v správnom tvare.

________________________________________________

Regulárny výraz: ^[A-Za-z0-9]+@[A-Za-z]+.[A-Za-z]{2,}$

Popis: Tento regulárny výraz slúži na overenie správnej formy e-mailovej adresy.

^ symbolizuje začiatok reťazca.
[A-Za-z0-9]+ označuje, že reťazec musí obsahovať jedno alebo viacero veľkých písmen, malých písmen alebo číslic.
@ označuje samotný znak zavináča.
[A-Za-z]+ znamená, že reťazec za znakom zavináča musí obsahovať jedno alebo viacero veľkých písmen alebo malých písmen.
. je zpätné lomítko, ktoré escapuje bodku, takže bodka sa stáva literálnym znakom.
[A-Za-z]{2,} označuje, že reťazec za bodkou musí obsahovať aspoň dve veľké písmená alebo malé písmená.
$ označuje koniec reťazca.
Tento regulárny výraz je užitočný na rýchlu validáciu e-mailových adries. Používa sa v rôznych programovacích jazykoch a nástrojoch na kontrolu, či zadaný reťazec vyhovuje formátu e-mailovej adresy.



Na hranie sa s regulárnymi výrazmy odporúčam použiť chagtp prípadne softvér ktorý je nato priamo určený napríklad https://regexr.com/
Ak by si potreboval vytvoriť regulárny výraz na mieru, prípadne pochopiť ako to celé funguje a kde sa to dá využit kludne napís :)
Коментарі:
Marek S.
Dovolím si upozorniť, že 2. regulárny výraz - uvedený ako vhodný na overenie "správnej" emailovej adresy na to nie je vhodný - dokonca má veľa závad. Najväčšie sú podľa mňa dve: 1. "názov počítača" resp. doména môže obsahovať iba jednu bodku alebo iný nealfanumerický znak. To by sa veľká väčšina univerzitných, inštitucionálnych a korporátnych emailových adries nedala vložiť - kde sú všelijaké fakulty, katedry, sekcie, oddelenia... ktoré majú svoje pod-domény (oddelené bodkou).
Nemajú všetci schránku na GMail (apod)... alebo mnohí, čo ju majú aj na GMaili (apod) majú aj ďalšie inde (napr. pracovné). Neprešla by napr. ani moja adresa na GMaili (meno a priezvisko mám oddelené bodkou), ak by som si ju nechcel "zmršiť" (vynechaním bodky).
2. Podobne to nepodporuje rôzne povinne podporované špeciálne znaky (ako napr. pomlčku, plusko) a rôzne platné časti súvisiacich štandardov - viď napr. https://en.wikipedia.org/wiki/Email_address
A už vôbec nie rozšírenia o diakritiku apod.
3+. Ako menší ale ("pedagogicky" citeľný) problém mi príde byť použitie bodky ako zástupcu (iba) pre bodku. V regulárnych výrazoch bodka znamená "žolík" pre hocijaký jeden znak. Bodka sa dá reprezentovať ako [.] alebo potom "eskejpami" (spätným/i lomítkom/ami - tam už si treba dávať bacha na to, v akom nástroji a kontexte sa to deje).
----
Prvý regex naozaj slúži na overenie, či ide o dve slová.
Na overenie mena sa až tak nehodí - niektorí ho nemajú dvojslovné.
Väčšinou ide o cudzincov, ale napr. aj nie málo sloveniek, čo si ponechali aj dievčenské priezvisko.
A keď ho musia napísať do kolóniek "meno" a "priezvisko", tak niektorí do niektorej z týchto kolóniek dávajú viac slov.
----
Všetko v dobrom.
Коментарі:
Marek S.
Toto bolo pokračovanie komentára ku predchádzajúcej odpovedi.