[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