Oznake za početak i kraj u regularnim izrazima

Regularne izraze često koristimo da bismo proverili da li tekst počinje ili se završava na određen način. Za to nam je potrebno da nekako označimo početak i kraj. Ove oznake nisu zaista konkretni znakovi, već graničnici koji označavaju početak i kraj.

^XYZ Traži tekst XYZ koji se nalazi isključivo na početku teksta ili linije
XYZ$ Traži tekst XYZ koji se nalazi isključivo na kraju teksta ili linije
\b Ovo je poseban džoker znak kojim se obeležava početak odnosno kraj reči.
\B Negacija \b znaka, dakle graničnik za svaki znak koji nije na početku odnosno kraju reči.

Oznaku za početak teksta ima smisla navoditi na samom početku regularnog izraza. To bukvalno znači da ćemo imati poklapanje ako "tekst počinje tim-i-tim šablonom". Isto važi i za graničnik za kraj teksta - njega smeštamo na kraj izraza.

^[šablon] [šablon]$
Početak teksta ^sva g svaki kraj će tako osvanuti kao novi početak Ovaj šablon selektuje tekst "sva", ali samo onaj koji se nalazi na početku, zahvaljujući kvačici ^, koju smo postavili na početak regularnog izraza.

Probajte da uklonite oznaku za početak, da vidite šta se dešava - biće selektovan i "sva" iz "osvanuti".

Kraj teksta tak$ g svaki kraj će tako osvanuti kao novi početak U ovom primeru biće selektovan tekst "tak", ali samo na kraju teksta. Šablon je vezan za kraj, zahvaljujući znaku za dolar $.

Ako biste uklonili ovu oznaku iz šablona, biće selektovane sve pojave teksta "tak" (i iz "tako").

Tekst koji se sastoji od 3 cifre ^\d\d\d$ g 452 Ovde u šablonu koristimo oznaku za početak i kraj - to znači da smo definisali šablon ne kao deo teksta već kao kompletan tekst. Naveli smo i metaznak d, koji označava bilo koju cifru, tri puta, što bi značilo da proveravamo da li se ceo tekst sastoji isključivo iz tri cifre.
Cifre od početka do kraja ^\d+$ g 124578 Slično kao u prethodnom primeru, definišemo šablon koji uparuje tekst koji se sastoji samo od jedne ili više cifara.

U sledećem primeru definišemo iste šablone samo u JavaScriptu.

Primer


  var prom = "svaki kraj će tako osvanuti kao novi početak";
  
  // testiranje za početak
  var p1 = /sva/g;
  var p2 = /^sva/g;
  
  // testiranje za kraj
  var k1 = /tak/g;
  var k2 = /tak$/g;

Prvi regularni izraz pronalazi sve pojave stringa "sva". Drugi pronalazi samo onaj koji se nalazi na početku teksta:

  1. svaki kraj će tako osvanuti kao novi početak
  2. svaki kraj će tako osvanuti kao novi početak

Isto važi kada testiramo pojavu stringa "tak" bez oznake i sa oznakom koja kaže da se javlja na kraju teksta:

  1. svaki kraj će tako osvanuti kao novi početak
  2. svaki kraj će tako osvanuti kao novi početak

Evo jednog korisnog primera - želimo da proverimo da li se tekst sastoji samo od cifara:


  var r1 = /^\d\d\d$/;    // početak, pa tri cifre, pa kraj
  var r2 = /^\d+$/;       // početak, pa jedna ili više cifara, pa kraj
  

Uparivanje kroz više linija

Ako zadamo modifikator m, oznake za početak i kraj će se drugačije ponašati. Više neće označavati samo početak i kraj celog teksta, već i svake linije u tekstu.

Multiline primer


  var prom = "Otišao sam do kraja sveta\nsaznao sam da na tom mestu\npočinje neki drugi svet!";
  
  var p1 = /^.../g;   // prva tri znaka teksta
  var p2 = /^.../gm;  // prva tri znaka svake linije
  
  // testiranje za kraj
  var k1 = /...$/g;   // poslednja tri znaka teksta
  var k2 = /...$/gm;  // poslednja tri znaka svake linije

Prvi regularni izraz pronalazi prva tri znaka teksta, a drugi prva tri znaka svake linije:

  1. Otišao sam do kraja sveta
    saznao sam da na tom mestu
    počinje neki drugi svet!
  2. Otišao sam do kraja sveta
    saznao sam da na tom mestu
    počinje neki drugi svet!

Slična situacija je i kada radimo sa oznakom za kraj.

  1. Otišao sam do kraja sveta
    saznao sam da na tom mestu
    počinje neki drugi svet!
  2. Otišao sam do kraja sveta
    saznao sam da na tom mestu
    počinje neki drugi svet!
regex-anchors-sr
  1. RegEx Tutorial Anchors
  2. A. Watt (2005): Beginning Regular Expressions, Wiley Publishing, Indianapolis
  3. J. Goyvaerts, S. Levithan (2012): Regular Expressions Cookbook, 2nd Ed, O’Reilly, Sebastopol
Svi elementi sajta Web'n'Study, osim onih za koje je navedeno da su u javnom vlasništvu, vlasništvo su autora i ne smeju se koristiti, u celosti ili delimično bez pismenog odobrenja autora. To uključuje tekstove, slike, ilustracije, animacije, prateći grafički materijal i programski kod.
Ovaj sajt koristi tehnologiju kolačića (cookies). Detaljnije o tome možete pročitati u tekstu o našoj politici privatnosti.