User Tools

Site Tools


ro:regularexpressions

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

ro:regularexpressions [2017/09/06 07:04]
junior-root [Abrevieri de caractere]
ro:regularexpressions [2020/02/28 10:46]
Line 1: Line 1:
-==== Expresii regulate ==== 
-O expresie regulată este un șir de caractere care conține niște reguli speciale, comportându-se ca un șablon pentru căutarea/potrivirea unor porțiuni dintr-un text. 
- 
-==== Abrevieri de caractere ==== 
- 
-^Expresie^Descriere^ 
-|**c**|un caracter, atâta timp cât acesta nu are o altă semnificație în expresiile regulate| 
-|**\c**|caută o potrivire cu caracterul care urmează semnului '\'. Util pentru a căuta caractere care singure au un rol special (ex. '.', '?'...)| 
-|**\a**|caracterul chr(7)| 
-|**\f**|caracterul chr(12)| 
-|**\n**|caracterul de linie nouă chr(10)| 
-|**\r**|caracterul chr(13)| 
-|**\t**|caracterul tabulator chr(9)| 
-|**\v**|caracterul chr(11)| 
-|**\xhhhh**|un caracter Unicode cu codul exprimat în sistemul hexazecimal cu numărul hhhh (între 0x0000 și 0xFFFF)| 
-|**\0ooo**|un caracter ASCII/Latin1 având codul exprimat în sistemul octal ooo (între 0 și 0377)| 
-|**.** (punct)|orice caracter, inclusiv caracterul linie nouă| 
-|**\d**|o cifră| 
-|**\D**|un caracter care nu este o cifră| 
-|**\s**|un caracter de spațiere| 
-|**\S**|un caracter care nu este unul de spațiere| 
-|**\w**|o cifră, o literă sau caracterul '_'| 
-|**\W**|un caracter care nu este o cifră, o literă sau caracterul '_'| 
-|**\1 \2 ... \9**|referință din urmă (același text capturat de ultimul grup de capturare)| 
- 
-==== Seturi de caractere ==== 
-Parantezele pătrate înseamnă potrivirea oricărui caracter dintre parantezele pătrate. Cu excepția abrevierilor de caractere descrise mai sus și a următoarelor două excepții, alte caractere nu au înțelesuri speciale între paranteze pătrate:\\ 
-  * caracterul minus/cratimă '-' definește un interval\\ 
-  * caracterul '^' poziționat imediat după deschiderea parantezei drepte înseamnă negarea conținutului dintre paranteze. 
- 
-^Exemplu de expresie regulată^Descriere^ 
-|**[xyz]**|se potrivește cu oricare din caracterele 'x', 'y' sau 'z'| 
-|**[^xyz]**|se potrivește cu orice caracter, cu excepția caracterelor 'x', 'y' și 'z'| 
-|**[a-g]**|se potrivește cu orice caracter din intervalul dintre 'a' și 'g'| 
-|**[0-9a-zA-Z_]**|se potrivește cu orice cifră între '0' și '9', orice caracter între 'a' și 'z' și între 'A' și 'Z', sau se potrivește cu caracterul '_'| 
-Folosirea abrevierilor de caractere predefinite este mai portabilă decât utilizarea intervalelor de caractere între platforme și limbi. De exemplu, **[0-9]** se potrivește cu o cifră în alfabete occidentale, dar **\d** se potrivește cu o cifră din //orice// alfabet. 
- 
-==== Cuantificatori ==== 
-În mod implicit, o expresie este așteptată să apară o singură dată. Acest lucru poate fi schimbat cu ajutorul cuantificatorilor: 
-^Expresie^Descriere^Expresie regulată^Potriviri^Echivalent cu^ 
-|**?**|una sau nicio apariție|"maci?"|"mac", "maci"|{0,1}| 
-|**+**|una sau mai multe apariții|"0+"|"0", "00", "000" etc.|{1,}| 
-|*****|zero sau mai multe apariții|"0*123"|"123", "0123", "00123", "000123" etc.|{0,}| 
-|**{n}**|un număr de n apariții|"x{5}"|"xxxxx"|{n,n}| 
-|**{n,}**|cel puțin n apariții| | | | 
-|**{,m}**|cel mult m apariții| | |{0,m}| 
-|**{n,m}**|cel puțin n apariții și cel mult m apariții| | | | 
- 
-Cuantificatorii sunt în mod normal "lacomi". Ei încearcă să potrivească întotdeauna cât mai mult text posibil. Comportamentul poate fi schimbat cu ajutorul instrucțiunii [[regexminimal|RegExMinimal]]. 
- 
-==== Grupuri de capturare ==== 
-Parantezele rotunde permit să se grupeze elemente împreună pentru a le putea cuantifica și captura.\\ 
-De exemplu, dacă se folosește expresia regulară "**roșu|alb|galben**", atunci va fi capturată doar prima valoare întâlnită dintre cele trei. Dacă se folosesc parantezele rotunde, acestea permit gruparea elementelor. De exemplu expresia "**steag (roșu|alb|galben)**" va captura una dintre valorile: "steag roșu", "steag alb" sau "steag galben". Dacă nu s-ar fi folosit parantezele pentru grupare și s-ar fi folosit expresia regulară "**steag roșu|alb|galben**" atunci s-ar fi căutat doar valorile "steag roșu", "alb" sau "galben". 
- 
-Grupurile de captură permit și cuantificarea conținutului lor. De exemplu expresia "**(bla)+**" va captura oricâte serii consecutive de "bla", dar nu mai puțin de una (vezi cuantificatorul **+**). Texte care se potrivesc acestei expresii pot fi: "bla", "blabla", "blablablablabla" etc. 
- 
-Grupurile de captură permit utilizarea referințelor. O expresie regulată poate face referire la un grup de captură din cadrul expresiei folosind o referință. Se pot folosi până la 9 referințe, unde **\1** este primul grup de captură din expresie, **\2** este al doilea, **\3** este al treilea ș.a.m.d.\\ 
-De exemplu, expresia **\b(\w+)\W+\1\b** poate fi folosită în găsirea cuvintelor repetate unul după altul. **\b** reprezintă existența unei limite de cuvânt (din engleză boundary = limită), adică tocmai începe sau se termină un cuvânt format din caractere alfanumerice. Apoi urmează un grup de captură **(\w+)** care va potrivi cât mai multe caractere alfanumerice consecutive (cel puțin un caracter), apoi urmează unul sau mai multe caractere care nu sunt alfanumerice **\W+**, urmate imediat de o referință **\1**. Aceasta face referire la textul rezultat din aplicarea primului grup de capturare din expresie (**(\w+)**). Această expresie va potrivi cuvintele dublate dintr-un text, cum ar fi: "nu știu **dar dar** am să învăț", sau "morcov **și și** țelină". 
- 
-Dacă se dorește doar gruparea, fără capturare în vederea realizării unei referințe ulterioare, de exemplu, atunci se poate folosi o sintaxă precum: **(?:roșu|alb)**. 
- 
-Grupurile, de orice fel, pot fi imbricate (să fie incluse unele în altele). 
- 
-==== Aserțiuni ==== 
-Aserțiunile fac o declarație despre text în punctul în care acestea apar în expresie, dar nu se potrivesc cu niciun caracter. 
-^Expresie^Descriere^ 
-|**^**|semnifică începutul șirului de caractere în care se caută. De exemplu expresia "**^Așadar"** se va potrivi doar în cazul în care cuvântul "Așadar se află la începutul textului de căutat. Dacă se dorește căutarea simbolului '//^//' atunci se poate folosi "**\^**"| 
-|**$**|semnifică sfârșitul șirului de caractere în care se caută. De exemplu expresia "**\s+$**" va potrivi doar caracterele de spațiere aflate la sfârșitul textului.| 
-|**\b**|semnifică o limită a unui cuvânt. Adică fie începe un cuvânt, fie se termină. Expresia "**\bcine\b**" se va potrivi doar cu cuvântul "cine", pe când "**\bcine**" se va potrivi cu orice cuvânt care începe cu "cine" precum "cinema" sau "cineva". În mod asemănător, expresia "**cine\b**" se va potrivi cu sfârșitul unor cuvinte precum "oricine" sau "mărăcine"| 
-|**\B**|semnifică faptul că acolo nu este vorba de o limită a unui cuvânt. De exemplu expresia "**\Bcine\B**" se va potrivi doar în cazul în care "cine" se află în mijlocul unui cuvânt. **\B** este inversul expresiei **\b**.| 
-|**(?=...)**|potrivește doar dacă expresia există, fără să o captureze. De exemplu expresia **număr(?=\s+întreg\b)** se va potrivi cu "număr" doar dacă este urmat de cuvântul "întreg".| 
-|**(?!...)**|potrivește doar dacă expresia nu există, fără să o captureze. De exemplu expresia **număr(?!\s+real\b)** se va potrivi cu "număr" doar dacă nu este urmat de cuvântul "real".| 
- 
- 
  
ro/regularexpressions.txt · Last modified: 2020/02/28 10:46 (external edit)