[linux] regexp - pochopil som ho? - VZOR centrum.sk
Peter
konfery na lentus.sk
Pátek Prosinec 3 11:40:36 CET 2004
Peter wrote:
> Ahoj.
>
> Dost casto sa (man, web, konfery) odvolava na regexp, resp. "rozsirene
> vyrazy" (pamatam si nazov spravne??).
>
> Nakolko som dokopy neprogramoval nic a BASH a GREP ovladam iba zakladne,
> mam v tom mishung.
>
> Pri hladani ineho som nadabil na toto:
> *********
> http://napoveda.centrum.sk/email/index.html#44
> Regulárne výrazy
>
> Regulárne výrazy slúžia k spracovávaniu textových reťazcov, a to tak, že
> definujeme masku, ktorej vyhovujú len určité reťazce.
> Príklad:
> pre definovanie filtra "ak predmet obsahuje 'lekcia 1'" netreba používať
> regulárne výrazy - stačí použiť k tomu určenú podmienku vo filtroch.
> Toto riešenie má však nevýhodu v tom, že, podmienke vyhovejú všetky
> "predmety" obsahujúce "lekcia 1". A to sa nemusí hodiť vždy. Potom
> prichádza na rad regulárny výraz. Vďaka regulárnym výrazom je možné
> aplikovať filter napríklad len v prípade, keď "predmet" začína slovom
> "lekcia" a končí číslom lekcie, teda nielen číslom "1", ale akýmkoľvek
> platným číslom lekcie. Taký regulárny výraz by vypadal takto: "^lekcia
> [0-9]*$"
>
> Regulárne výrazy využívajú pre svoju funkciu špeciálne metaznaky, sú to
> hlavne tieto:
> - "^" začiatok reťazca
> výraz: "^ahoj" vyhovie, ak je použitý na reťazec "ahoj svet"
> "^ahoj" nevyhovie, ak je použitý na "pavol, ahoj"
>
> - "$" koniec reťazca
> výraz: "ahoj$" vyhovie, ak je použitý na "pavol ahoj",
> "ahoj$" nevyhovie, ak je použitý na "ahoj pavol"
>
> - "." nahradzuje jeden ľubovoľný znak
> výraz: "a.oj" vyhovie, ak je použitý na "ahoj", alebo napr. na axoj"
>
> - "*","+","?" hovorí, koľkokrát sa má daný výraz v reťazci vyskytovať
> "*" nahrazuje 0 (nula) až viac znakov
> "+" znamená minimálne jeden znak
> "?" znamená jeden alebo žiadny výskyt
> výraz: "na*ný*" vyhovie pre "naný", ale zároveň i "najdený", tak i
> "nastrúhaný" apod.
> výraz: "aho+j" vyhovie, ak je použitý na "ahoj", ale aj na "ahooooooj"
>
> - "(" a ")" znamenajú množinu znakov. Pri zápise do formulára je nutné
> pred ne dávať znak "\", aby kompilátor výrazov poznal, že ide o metaznak
> výraz: "peter ?\(lojzo\)? ?adam" vyhovie, ak je použitý na "peter adam",
> ale aj "peter lojzo adam"
>
> - "|" zjednodušene povedané znamená "alebo"
> výraz: "peter ?\(lojzo\|alois\)? ?adam" vyhovie, ak je použitý na "peter
> adam", ale aj "peter lojzo adam", ale tiež na "peter alois adam"
>
> - "[" a "]" znamenajú vymenovanie použiteľných znakov. Znaky možno buď
> vymenovať, alebo použiť rozsah znakov
> výraz: "^[123]+[a-z]*$" vyhovie, ak je použitý na "1abc" alebo "2abc",
> ale napríklad nevyhovie pri použití na "aabc" alebo "5abc" nebo "1a3c"
> *******
>
> Chcem sa spytat, ci dobre TIPUJEM, ze je to regexp a ci to mozem bezne
> pouzivat v bash-i, scriptoch a pod.
>
> Diky za uvedenie do problematiky
>
> Peter
Vdaka vsetkym nastudujem cez vikend ;)
Peter
Další informace o konferenci linux