Provided by: manpages-ro_4.27.0-1_all bug

NUME

       regex - expresii regulate POSIX.2

DESCRIERE

       Expresiile  regulate  („ER”), astfel cum sunt definite în POSIX.2, se prezintă sub două forme: ER moderne
       (aproximativ cele din egrep(1); POSIX.2 le numește ER „extinse”) și ER  depășite  (aproximativ  cele  din
       ed(1);  POSIX.2  ER „de bază”). ER învechite există mai ales pentru compatibilitatea retroactivă în unele
       programe vechi; acestea vor fi discutate la sfârșit. POSIX.2 lasă deschise unele aspecte ale sintaxei  și
       semanticii  ER;  „(!)” marchează deciziile privind aceste aspecte care pot să nu fie complet portabile în
       alte implementări POSIX.2.

       O ER (modernă) este una(!) sau mai multe(!) ramuri nevide, separate prin  „|”.  Se  potrivește  cu  orice
       lucru care se potrivește cu una dintre ramuri.

       O  ramură este una(!) sau mai multe piese, concatenate. Ea corespunde unei potriviri pentru prima, urmată
       de o potrivire pentru a doua și așa mai departe.

       O piesă este un atom eventual urmat de un singur(!) „*”, „+”, „?”, sau delimitattor. Un atom urmat de „*”
       corespunde unei secvențe de 0 sau mai multe potriviri ale atomului. Un atom urmat de „+” corespunde  unei
       secvențe  de  1  sau mai multe potriviri ale atomului. Un atom urmat de „?” corespunde unei secvențe de 0
       sau 1 potriviri ale atomului.

       Un delimitator este „{” urmată de un număr întreg zecimal fără semn,  eventual  urmată  de  „,”  eventual
       urmată  de  un alt număr întreg zecimal fără semn, întotdeauna urmată de „}”. Numerele întregi trebuie să
       fie între 0 și RE_DUP_MAX (255(!)) inclusiv, iar dacă sunt două, primul nu poate depăși pe al doilea.  Un
       atom  urmat  de  un  delimitator care conține un întreg i și nicio virgulă se potrivește cu o secvență de
       exact i potriviri ale atomului. Un atom urmat de un delimitator care conține un întreg i și o virgulă  se
       potrivește  cu o secvență de i sau mai multe potriviri ale atomului. Un atom urmat de un delimitator care
       conține două numere întregi i și j se potrivește cu o secvență de potriviri i până la  j  (inclusiv)  ale
       atomului.

       Un  atom  este  o  expresie  regulată  inclusă între „()” (care corespunde unei potriviri pentru expresia
       regulată), un set gol de „()” (care corespunde șirului nul)(!), o expresie între paranteze drepte  (a  se
       vedea  mai  jos),  „.”  (se  potrivește  cu  orice  caracter unic), „^” (se potrivește cu șirul nul de la
       începutul unei linii), „$” (se potrivește cu șirul nul de la sfârșitul unei linii), o bară oblică inversă
       „\” urmată de unul dintre caracterele „^. [$()|*+?{\”  (se  potrivește  cu  acest  caracter  luat  ca  un
       caracter  obișnuit),  o  bară  oblică inversă „\” urmată de orice alt caracter(!) (se potrivește cu acest
       caracter luat ca un caracter obișnuit, ca și cum „\” nu ar fi fost prezentă(!)), sau un  singur  caracter
       fără altă semnificație (se potrivește cu acest caracter). O acoladă „{” urmată de un alt caracter decât o
       cifră este un caracter obișnuit, nu începutul unui delimitator(!). Este ilegal să se încheie o ER cu „\”.

       O  expresie  între  paranteze  drepte  este  o  listă  de caractere incluse între „[]”. În mod normal, se
       potrivește cu orice singur caracter din listă (a se vedea mai  jos).  Dacă  lista  începe  cu  un  accent
       circumflex „^”, se potrivește cu orice caracter unic (a se vedea mai jos), dar nu din restul listei. Dacă
       două  caractere  din  listă  sunt separate prin „-”, aceasta este o abreviere pentru întregul interval de
       caractere dintre cele două  (inclusiv)  din  secvența  de  colaționare,  de  exemplu,  „[0-9]”  în  ASCII
       corespunde  oricărei  cifre  zecimale.  Este  ilegal(!)  ca  două intervale să împartă un punct final, de
       exemplu, „a-c-e”. Intervalele depind foarte mult de secvența de colaționare, iar programele portabile  ar
       trebui să evite să se bazeze pe ele.

       To include a literal '

       În cadrul unei expresii între paranteze drepte, un element de colaționare (un caracter, o secvență de mai
       multe  caractere  care  se  colaționează  ca  și  cum ar fi un singur caracter sau un nume de secvență de
       colaționare pentru oricare dintre acestea) inclus între „[.” și „.]” reprezintă secvența de  caractere  a
       acelui  element  de  colaționare.  Secvența  este  un  singur element al listei expresiei între paranteze
       drepte. O expresie între paranteze drepte care conține un element de colaționare cu mai  multe  caractere
       poate corespunde astfel mai multor caractere, de exemplu, dacă secvența de colaționare include un element
       de colaționare „ch”, atunci ER „[[.ch.]]*c” corespunde primelor cinci caractere din „chchcc”.

       În  cadrul  unei  expresii  între paranteze drepte, un element de colaționare încadrat între „[=” și „=]”
       este o clasă de echivalență, reprezentând secvențele de caractere ale tuturor elementelor de  colaționare
       echivalente  cu  acesta,  inclusiv  el  însuși;  (în  cazul  în care nu există alte elemente echivalente,
       tratamentul este ca și cum delimitatorii care le înconjoară ar fi „[.” și „.]”). De exemplu, dacă „o”  și
       „ô)” sunt membrii unei clase de echivalență, atunci „[[=o=]]”, „[[=ô=]]” și „[oô]” sunt toate sinonime. O
       clasă de echivalență nu poate(!) fi un capăt al unui interval.

       În  cadrul  unei expresii între paranteze drepte, numele unei clase de caractere încadrat în „[:” și „:]”
       reprezintă lista tuturor caracterelor care aparțin clasei respective. Numele  standard  ale  claselor  de
       caractere sunt:

              alnum   digit   punct
              alpha   graph   space
              blank   lower   upper
              cntrl   print   xdigit

       Acestea  reprezintă  clasele  de  caractere definite în wctype(3). O configurație regională poate furniza
       altele. O clasă de caractere nu poate fi utilizată ca punct final al unui interval.

       În cazul în care o ER ar putea corespunde mai multor subșiruri dintr-un șir dat, ER corespunde celui care
       începe cel mai întâi în șir. În cazul în care ER se poate potrivi cu mai mult de un subșir care începe în
       acel punct, se potrivește cu cel mai lung. Subexpresiile se potrivesc, de asemenea,  cu  cele  mai  lungi
       subșiruri  posibile,  sub  rezerva  constrângerii  ca  întreaga  potrivire  să fie cât mai lungă posibil,
       subexpresiile care încep mai înainte în ER având prioritate față de cele care încep mai târziu.  Rețineți
       că  subexpresiile  de  nivel  superior au astfel prioritate față de subexpresiile lor componente de nivel
       inferior.

       Lungimile de potrivire se măsoară în caractere, nu în elemente de colaționare. Un șir nul este considerat
       mai lung decât nici o potrivire. De exemplu, „bb*” se potrivește cu cele trei caractere  din  mijloc  din
       „abbbc”, „(wee|week)(knights|nights)” se potrivește cu toate cele zece caractere din „weeknights”, atunci
       când  „(.*).*”  se  potrivește  cu  „abc”,  subexpresia  în  paranteză  se  potrivește cu toate cele trei
       caractere, iar atunci când „(a*)*” se potrivește  cu  „bc”,  atât  ER  întreagă  cât  și  subexpresia  în
       paranteză se potrivesc cu șirul nul.

       Dacă este specificată potrivirea independentă de diferența dintre minuscule și majuscule, efectul este ca
       și  cum  toate  diferențele  dintre  minuscule  și  majuscule  ar fi dispărut din alfabet. Atunci când un
       caracter alfabetic există atât în minusculă cât și în majusculă apare ca un caracter  obișnuit  în  afara
       unei  expresii  între  paranteze,  acesta este transformat efectiv într-o expresie între paranteze drepte
       care conține ambele cazuri, de exemplu, „x” devine „[xX]”. Atunci când apare în interiorul unei  expresii
       între  paranteze  drepte,  toate  variantele  sale (minusculă, majusculă) sunt adăugate la expresia între
       paranteze drepte, astfel încât, de exemplu, „[x]” devine „[xX]” și „[^x]” devine „[^xX]”.

       Nu se impune nicio limită specială privind lungimea ER(!). Programele destinate să fie  portabile  nu  ar
       trebui să utilizeze ER mai lungi de 256 de octeți, deoarece o implementare poate refuza să accepte astfel
       de ER și să rămână conformă cu POSIX.

       Expresiile  regulate  învechite  („de bază”) diferă în mai multe privințe. „|”, „+” și „?” sunt caractere
       obișnuite și nu există echivalent pentru funcționalitatea lor. Delimitatorii pentru limite sunt  „\{”  și
       „\}”, „{” și „}” fiind caractere obișnuite. Parantezele pentru subexpresiile imbricate sunt „\(” și „\)”,
       cu  „(”  și  „)”  fiind  ele  însele  caractere  obișnuite.  „^”  este  un caracter obișnuit, cu excepția
       începutului ER sau(!) începutul unei subexpresii în paranteză, „$” este un caracter obișnuit, cu excepția
       sfârșitului ER sau(!) sfârșitul unei subexpresii în paranteză, iar „*” este  un  caracter  obișnuit  dacă
       apare la începutul ER sau la începutul unei subexpresii în paranteză (după un posibil „^” inițial).

       În sfârșit, există un nou tip de atom, o referință înapoi: „\” urmat de o cifră zecimală diferită de zero
       d  corespunde  aceleiași  secvențe  de  caractere  corespunzătoare  celei de-a d-a subexpresii puse între
       paranteze (numerotarea subexpresiilor se face după pozițiile parantezelor de deschidere, de la stânga  la
       dreapta), astfel încât, de exemplu, „\([bc]\)\1” se potrivește cu „bb” sau „cc” dar nu cu „bc”.

ERORI

       A avea două tipuri de ExpresiiRegulate este o greșeală.

       Actuala specificație POSIX.2 spune că „)” este un caracter obișnuit în absența unui caracter „(” pereche;
       acesta a fost rezultatul neintenționat al unei erori de redactare, iar schimbarea este probabilă. Evitați
       să vă bazați pe aceasta.

       Referințele  înapoi  sunt  o greșeală îngrozitoare, punând probleme majore implementărilor eficiente. Ele
       sunt, de asemenea, definite oarecum  vag  („a\(\(b\)*\2\)*d”  corespunde  cu  „abbbd”?).  Evitați  să  le
       utilizați.

       Specificația  POSIX.2  privind  potrivirea  independentă de tipul caracterelor (majusculă/minusculă) este
       vagă. Definiția „prezența majusculei sau minusculei, implică prezența celeilalte” dată mai sus reprezintă
       consensul actual între cei ce implementează utilizarea expresiilor regulate cu privire  la  interpretarea
       corectă.

AUTOR

       Această pagină a fost preluată din pachetul regex al lui Henry Spencer.

CONSULTAȚI ȘI

       grep(1), regex(3)

       POSIX.2, secțiunea 2.8 (Regular Expression Notation).

TRADUCERE

       Traducerea    în   limba   română   a   acestui   manual   a   fost   făcută   de   Remus-Gabriel   Chelu
       <remusgabriel.chelu@disroot.org>

       Această traducere este  documentație  gratuită;  citiți  Licența publică generală GNU Versiunea 3  sau  o
       versiune   ulterioară   cu  privire  la  condiții  privind  drepturile  de  autor.   NU  se  asumă  NICIO
       RESPONSABILITATE.

       Dacă găsiți erori în traducerea acestui manual, vă rugăm să  trimiteți  un  e-mail  la  translation-team-
       ro@lists.sourceforge.net.

Pagini de manual de Linux 6.9.1                   15 iunie 2024                                         regex(7)