Regulj„ra Uttryck (REs) anv„nds vanligtvis f”r att best„mma om en teckenstr„ng av intresse matchas n†gonstans inom en upps„ttning av teckenstr„ngar. De till†ter specificering av komplexa matchningskriterier och „r p† det s„ttet mer flexibla „n regulj„ra s”kstr„ngar.

&xwp; anv„nder en kombination av m†nga standarder f”r RE syntaxer. Niv†n av funktionalitet „r f”r det mesta modellerad av ut”kade regulj„ra uttryck (ERE's) som st”ds av UNIX egrep och awk program. Vissa f”rb„ttringar som introducerats av POSIX, som typiskt †terfinns i UNIX ex och vi, finns ocks† f”r det mesta i GNU programvara och har ocks† st”d.

F”ljande regler g„ller (se BNF definitioner f”r en formell definition):

Grundl„ggande tecken

Teckenupps„ttning

Teckenupps„ttningar specificeras inom hakparenteser och definierar en upps„ttning av acceptabla tecken, eller m”jligtvis en upps„ttning icke acceptabla tecken.

  [abc]   matchar n†got tecken vilket kan vara a, b, eller c
  [^abc]  matchar ett tecken vilket „r vare sig a, b, eller c
  [a-z]   „r en upps„ttning inom omr†det 'a' till 'z'
  [a-j-t] „r en upps„ttning tecken inom omr†det 'a' till 't'
F”r att matcha ett -, ^, ] tecken i ett parenteselement, f”reg† den med ett backslash. Till exempel, [\])}] matchas ], eller ), eller }. Du kan ocks† specificera kompletta POSIX teckenklasser i ett ytterligare par av parenteser med kolon. I den kontexten,
  [:alnum:]   betyder alla alfanumeriska tecken
              (med ASCII, samma som A-Za-z0-9)
  [:lower:]   betyder alla gemener (sm† bokst„ver)
  ... etc.
Till exempel, att specificera [[:alnum:] \t] skulla visa alla alfanumeriska tecken plus mellanslag plus tab.

N†got tecken

Punkt (.) tecknet matchar n†got enstaka tecken, utan att bry sig om vilket det „r. Till exempel, t.e matchar the, men inte tree.

Ord integrerade tecken

GNU EREs definierar termen "ord integrerande tecken" till att inkludera n†got alfanumeriskt tecken, eller tecknet underscore _ f”r att spara lite skrivning.

\w „r kort f”r n†got ord integrerande tecken och „r ekvivalent till [[:alnum:]_] eller [A-Za-z0-9_]. \W f”r n†got icke-ord integrerande tecken och „r ekvivalent till [^[:alnum:]_] eller [^A-Za-z0-9_].

Dessa kortformer „r ogiltiga inom hakparentes teckenupps„ttningar.

Inget tecken

En Microsoft ut”kning till ERE's „r att till†ta dig att s„ga "n†got tecken utom detta tecken" genom att f”reg† det med ett tilde ~. Detta „r helt enkelt kortare att skriva „n den ekvivalenta hakparentes teckenupps„ttningen (~a „r kortare att skriva „n [^a]). Till exempel, t~he matchar tie, men inte the.

Ankare

Ankare specificerar konditioner d„r ett uttryck kan f”rekomma:

  ^       matchar om vi „r i starten av str„ngen
  $       matchar om vi „r i slutet av str„ngen
  \`      GNU alternativt s„tt att skriva ^
  \'      GNU alternativt s„tt att skriva $
  \<      matchar om vi „r i starten av ett ord (eller hela str„ngen)
  \>      matchar om vi „r i slutet av ett ord (eller hela str„ngen)
  \B      matchar om vi „r inom ett ord
  \y      matchar om vi „r i starten eller slutet av ett ord (eller hela str„ngen)
H„r „r "ord" i enlighet med GNU definitionerna som givits ovanf”r.

Till exempel, ^xyz matchar xyz endast om det „r starten av raden. \<fred matchar fred, freddy, men inte alfred.

Repetitioner

Genom att anv„nda ?, +, {M}, eller {M,N} kan du s”ka efter upprepningar:

  ab?c      matchar a, sedan ingen eller en f”rekomst av b, sedan c
  ab+c      matchar a, sedan en eller flera f”rekomster av b, sedan c
  ab*c      matchar a, sedan inhen eller flera f”rekomster av b, sedan c
  ab{M}c    matchar a, sedan M f”rekomster av b, sedan c
  ab{M,}c   matchar a, sedan M eller flera f”rekomster av b, sedan c
  ab{M,N}c  matchar a, sedan mellan M och N f”rekomster av b, sedan c

I det ovanst†ende, ges M och N numren decimalt, d„r om b†da „r givna, M m†ste vara <= N.

Till exempel, [A-Za-z_][A-Za-z0-9_]* matchar n†gon legal C eller C++ identifierare. \w{10,} matchar †tminstone 10 ord integrerande tecken. \<[0-9]{5}\> matchar ett 5 siffrors nummer.

Alternering

Du kan s”ka en sak eller en annan genom att anv„nda | symbolen. Till exempel, fred|bill matchar fred eller bill. fred|bill|rob matchar n†got av dessa 3 namn.

N„stlade ERE's

Parenteser kan anv„ndas f”r att gruppera ERE's till sub-ERE's, s† att operatorer som repetitioner eller alternerande operator kan till„mpas p† dem. Till exempel, (frog|toad)+ matchar en eller flera f”rekomster av frog eller toad.

N„stling kan utf”ras med flera niv†ers djup.

Bakreferenser

Varje g†ng en n„stlad ERE „r matchad, kommer vad som att matchat att spelas in. Du kan g”ra en bakreferens senare i huvud ERE (vilket betyder att vad helst som matchades f”re m†ste matchas igen) genom att specifiera backslash med ett enstaka nummer. Upp till 9 n„stlade ER's kan p† det s„ttet bakrefereras.

Till exempel, \2 s„ger att det andra n„stlade ERE m†ste matchas igen. Som ett resultat, (a|b)(c|d)\2\1 kommer att matcha acca, eller adda, eller bcca, eller bddb.

Notera att det ovanst†ende exemplet inte „r en kortform f”r att skriva (a|b)(c|d)(c|d)(a|b). Bakreferenser refererar inte till ERE, utan till vad som matchades av det.

Bakreferenser kan g”ras inom n„stlade ERE's f”r att bakrefererera ERE's. Till exempel, frog|((a|bc)d\1) matchar frog, eller ada, eller bcdbc, men inte adbc.