.\" -*- coding: UTF-8 -*- .ie t .ds dg \(dg .el .ds dg (!) '\" t .\" From Henry Spencer's regex package (as found in the apache .\" distribution). The package carries the following copyright: .\" .\" Copyright 1992, 1993, 1994 Henry Spencer. All rights reserved. .\" %%%LICENSE_START(MISC) .\" This software is not subject to any license of the American Telephone .\" and Telegraph Company or of the Regents of the University of California. .\" .\" Permission is granted to anyone to use this software for any purpose .\" on any computer system, and to alter it and redistribute it, subject .\" to the following restrictions: .\" .\" 1. The author is not responsible for the consequences of use of this .\" software, no matter how awful, even if they arise from flaws in it. .\" .\" 2. The origin of this software must not be misrepresented, either by .\" explicit claim or by omission. Since few users ever read sources, .\" credits must appear in the documentation. .\" .\" 3. Altered versions must be plainly marked as such, and must not be .\" misrepresented as being the original software. Since few users .\" ever read sources, credits must appear in the documentation. .\" .\" 4. This notice may not be removed or altered. .\" %%%LICENSE_END .\" .\" In order to comply with `credits must appear in the documentation' .\" I added an AUTHOR paragraph below - aeb. .\" .\" In the default nroff environment there is no dagger \(dg. .\" .\" 2005-05-11 Removed discussion of `[[:<:]]' and `[[:>:]]', which .\" appear not to be in the glibc implementation of regcomp .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH regex 7 "15 iunie 2024" "Pagini de manual de Linux 6.9.1" .SH NUME regex \- expresii regulate POSIX.2 .SH DESCRIERE Expresiile regulate („ER”), astfel cum sunt definite în POSIX.2, se prezintă sub două forme: ER moderne (aproximativ cele din \fBegrep\fP(1); POSIX.2 le numește ER „extinse”) și ER depășite (aproximativ cele din \fBed\fP(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; „\*(dg” marchează deciziile privind aceste aspecte care pot să nu fie complet portabile în alte implementări POSIX.2. .P O ER (modernă) este una\*(dg sau mai multe\*(dg \fIramuri\fP nevide, separate prin „|”. Se potrivește cu orice lucru care se potrivește cu una dintre ramuri. .P O ramură este una\*(dg sau mai multe \fIpiese\fP, concatenate. Ea corespunde unei potriviri pentru prima, urmată de o potrivire pentru a doua și așa mai departe. .P O piesă este un \fIatom\fP eventual urmat de un singur\*(dg „*”, „+”, „?”, sau \fIdelimitattor\fP. 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. .P Un \fIdelimitator\fP 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 \fBRE_DUP_MAX\fP (255\*(dg) inclusiv, iar dacă sunt două, primul nu poate depăși pe al doilea. Un atom urmat de un delimitator care conține un întreg \fIi\fP și nicio virgulă se potrivește cu o secvență de exact \fIi\fP potriviri ale atomului. Un atom urmat de un delimitator care conține un întreg \fIi\fP și o virgulă se potrivește cu o secvență de \fIi\fP sau mai multe potriviri ale atomului. Un atom urmat de un delimitator care conține două numere întregi \fIi\fP și \fIj\fP se potrivește cu o secvență de potriviri \fIi\fP până la \fIj\fP (inclusiv) ale atomului. .P Un atom este o expresie regulată inclusă între „\fI()\fP” (care corespunde unei potriviri pentru expresia regulată), un set gol de „\fI()\fP” (care corespunde șirului nul)\*(dg, o \fIexpresie între paranteze drepte\fP (a se vedea mai jos), „.” (se potrivește cu orice caracter unic), „\[ha]” (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ă „\[rs]” urmată de unul dintre caracterele „\fI\[ha]. [$()|*+?{\[rs]\fP” (se potrivește cu acest caracter luat ca un caracter obișnuit), o bară oblică inversă „\[rs]” urmată de orice alt caracter\*(dg (se potrivește cu acest caracter luat ca un caracter obișnuit, ca și cum „\[rs]” nu ar fi fost prezentă\*(dg), 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\*(dg. Este ilegal să se încheie o ER cu „\[rs]”. .P O \fIexpresie între paranteze drepte\fP este o listă de caractere incluse între „\fI[]\fP”. În mod normal, se potrivește cu orice singur caracter din listă (a se vedea mai jos). Dacă lista începe cu un accent circumflex „\[ha]”, se potrivește cu orice caracter unic (a se vedea mai jos), dar \fInu\fP din restul listei. Dacă două caractere din listă sunt separate prin „\-”, aceasta este o abreviere pentru întregul \fIinterval\fP de caractere dintre cele două (inclusiv) din secvența de colaționare, de exemplu, „\fI[0\-9]\fP” în ASCII corespunde oricărei cifre zecimale. Este ilegal\*(dg ca două intervale să împartă un punct final, de exemplu, „\fIa\-c\-e\fP”. Intervalele depind foarte mult de secvența de colaționare, iar programele portabile ar trebui să evite să se bazeze pe ele. .P To include a literal \[aq] .P Î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 „\fI[.\fP” și „\fI.]\fP” 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 „\fI[[.ch.]]*c\fP” corespunde primelor cinci caractere din „chchcc”. .P În cadrul unei expresii între paranteze drepte, un element de colaționare încadrat între „\fI[=\fP” și „\fI=]\fP” 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 „\fI[.\fP” și „\fI.]\fP”). De exemplu, dacă „o” și „\(^o)” sunt membrii unei clase de echivalență, atunci „\fI[[=o=]]\fP”, „\fI[[=\(^o=]]\fP” și „\fI[o\(^o]\fP” sunt toate sinonime. O clasă de echivalență nu poate\*(dg fi un capăt al unui interval. .P În cadrul unei expresii între paranteze drepte, numele unei \fIclase de caractere\fP încadrat în „\fI[:\fP” și „\fI:]\fP” reprezintă lista tuturor caracterelor care aparțin clasei respective. Numele standard ale claselor de caractere sunt: .P .RS .TS l l l. alnum digit punct alpha graph space blank lower upper cntrl print xdigit .TE .RE .P .\" As per http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=295666 .\" The following does not seem to apply in the glibc implementation .\" .P .\" There are two special cases\*(dg of bracket expressions: .\" the bracket expressions "\fI[[:<:]]\fP" and "\fI[[:>:]]\fP" match .\" the null string at the beginning and end of a word respectively. .\" A word is defined as a sequence of .\" word characters .\" which is neither preceded nor followed by .\" word characters. .\" A word character is an .\" .I alnum .\" character (as defined by .\" .BR wctype (3)) .\" or an underscore. .\" This is an extension, .\" compatible with but not specified by POSIX.2, .\" and should be used with .\" caution in software intended to be portable to other systems. Acestea reprezintă clasele de caractere definite în \fBwctype\fP(3). O configurație regională poate furniza altele. O clasă de caractere nu poate fi utilizată ca punct final al unui interval. .P Î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. .P 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, „\fIbb*\fP” se potrivește cu cele trei caractere din mijloc din „abbbc”, „\fI(wee|week)(knights|nights)\fP” se potrivește cu toate cele zece caractere din „weeknights”, atunci când „\fI(.*).*\fP” se potrivește cu „abc”, subexpresia în paranteză se potrivește cu toate cele trei caractere, iar atunci când „\fI(a*)*\fP” se potrivește cu „bc”, atât ER întreagă cât și subexpresia în paranteză se potrivesc cu șirul nul. .P 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 „\fI[xX]\fP”. 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, „\fI[x]\fP” devine „\fI[xX]\fP” și „\fI[\[ha]x]\fP” devine „\fI[\[ha]xX]\fP”. .P Nu se impune nicio limită specială privind lungimea ER\*(dg. 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. .P 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 „\fI\[rs]{\fP” și „\fI\[rs]}\fP”, „{” și „}” fiind caractere obișnuite. Parantezele pentru subexpresiile imbricate sunt „\fI\[rs](\fP” și „\fI\[rs])\fP”, cu „(” și „)” fiind ele însele caractere obișnuite. „\[ha]” este un caracter obișnuit, cu excepția începutului ER sau\*(dg începutul unei subexpresii în paranteză, „$” este un caracter obișnuit, cu excepția sfârșitului ER sau\*(dg 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 „\[ha]” inițial). .P În sfârșit, există un nou tip de atom, o \fIreferință înapoi\fP: „\[rs]” urmat de o cifră zecimală diferită de zero \fId\fP corespunde aceleiași secvențe de caractere corespunzătoare celei de\-a \fId\fP\-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, \fI„\[rs]([bc]\[rs])\[rs]1”\fP se potrivește cu \fI„bb”\fP sau \fI„cc”\fP dar nu cu \fI„bc”\fP. .SH ERORI A avea două tipuri de ExpresiiRegulate este o greșeală. .P 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. .P Referințele înapoi sunt o greșeală îngrozitoare, punând probleme majore implementărilor eficiente. Ele sunt, de asemenea, definite oarecum vag („\fIa\[rs](\[rs](b\[rs])*\[rs]2\[rs])*d\fP” corespunde cu „abbbd”?). Evitați să le utilizați. .P .\" As per http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=295666 .\" The following does not seem to apply in the glibc implementation .\" .P .\" The syntax for word boundaries is incredibly ugly. 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ă. .SH AUTOR .\" Sigh... The page license means we must have the author's name .\" in the formatted output. Această pagină a fost preluată din pachetul regex al lui Henry Spencer. .SH "CONSULTAȚI ȘI" \fBgrep\fP(1), \fBregex\fP(3) .P POSIX.2, secțiunea 2.8 (Regular Expression Notation). .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .