Obični i metaznakovi u regularnim izrazima
Najprostiji regularni izraz je onaj koji definiše običan tekst. To znači da kao regularni izraz možemo navesti neki niz znakova koji će onda biti uparivan sa tekstom.
tekst
Metaznakovi
Metaznakovi (metacharacters) su posebni znakovi koji znače nešto specijalno u regularnim izrazima. To znači da te znakove ne smemo da navedemo tek tako, već moramo da ih "preskočimo" pomoću obrnute kose crte.
Znak | Značenje |
---|---|
. (tačka) | tačka je džoker znak - zamenjuje jedan, bilo koji znak, osim znaka za novi red |
+ (plus) | kvantifikator - prethodno zadati znak može da se ponovi jednom ili više puta |
* (zvezdica) | kvantifikator - prethodno zadati znak može da se ponovi nijednom ili više puta |
? (znak pitanja) | znači da se prethodno zadati znak pojavljuje jednom ili nijednom, ali i da utiče na kvantifikatore - ako se navede koristi lenjo umesto pohlepnog uparivanja |
[ (otvorena uglasta zagrada) | unutar uglastih zagrada definišemo tzv. klasu znakova zatvorena zagrada ima posebno značenje samo u slučaju da ispred postoji otvorena zagrada |
{ (otvorena vitičasta zagrada) | unutar vitičastih zagrada definišemo ponavljanje prethodnog znaka zatvorena zagrada ima posebno značenje samo u slučaju da ispred postoji otvorena zagrada |
^ (kvačica) | ima dvojako značenje - može biti oznaka za početak teksta, ali i negacija u klasi karaktera |
$ (dolar) | oznaka za kraj teksta |
| (uspravna crta) | odvajanje alternativa |
( (otvorena zagrada) | grupisanje i povratne reference |
) (zatvorena zagrada) | grupisanje i povratne reference |
\ (obrnuta kosa crta) | ovo je znak za preskakanje (escaping) - pomoću njega zadajemo posebne karaktere |
Kao što smo već napomenuli, ako želimo da uparimo tekst u kome se pojavljuje i neki od metaznakova, taj znak "preskačemo".
\[metaznak]
Ovo nisu jedini metaznakovi, ali su jedini koji se zadaju kao jedinstven znak. Svi ostali metaznakovi zadaju se sa vodećom obrnutom kosom crtom, i tek tada dobijaju posebno značenje. Npr:
. (metaznak - džoker, bilo koji znak)
\. (običan znak - tačka)
d (običan znak - slovo "d")
\d (metaznak - džoker, bilo koja cifra)
Nemojte brinuti ako vam sada nisu jasna značenja metaznakova. Sve ćemo to razjasniti u tekstovima koji dolaze.
Primer za zadavanje običnog teksta
Evo najjednostavnijeg primera - kreirali smo regularni izraz koji predtavlja baš jedan bukvalni tekst.
var rx = /tekst/;
var t = "U tekstu se postavilo pitanje - kakav je to tekst?";
U tekstu t, biće pronađena prva pojava zadatog šablona rx: "U tekstu se postavilo pitanje - kakav je to tekst?".
Sada pogledajte kako ćemo zadati pretragu reči "tekst" koja se završava znakom pitanja.
var lose = /tekst?/; // ovo je neispravno - nismo "preskočili" metaznak ?
var dobro = /tekst\?/;
var t = "U tekstu se postavilo pitanje - kakav je to tekst?";
Rezultat uparivanja teksta i regularnog izraza dobro: "U tekstu se postavilo pitanje - kakav je to tekst?".
Najgore je to što ni prvi regularni izraz nije neispravan sam po sebi - i on će funkcionisati, ali ne onako kako očekujemo! Očigledno, moramo da budemo vrlo pažljivi.