User Tools

Site Tools


ro:regularexpressions

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
ro:regularexpressions [2017/09/05 17:30]
junior-root
ro:regularexpressions [2020/02/28 10:46] (current)
Line 1: Line 1:
-==== Regular Expressions ==== +==== Expresii regulate ==== 
-Regular Expressions are just normal strings but have a specific format used in searching and replacing text. +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.
-O expresie regulată, sau "regex", este un model pentru potrivirea substringurilor într-un text. Acest lucru este util în multe contexte, de exemplu,+
  
 ==== Abrevieri de caractere ==== ==== Abrevieri de caractere ====
  
-^Element^Potrivire^Text de căutat și potriviri^Expresie regulată+^Expresie^Descriere
-|**c**|un caracter, atâta timp cât acesta nu are o altă semnificație în expresiile regulate|"un ș**ori**cel"|"ori"+|**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. '.', '?'...)|"Semne:!@#**?**#%**?**"|"\?"+|**\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)| | +|**\a**|caracterul chr(7)| 
-|**\f**|caracterul chr(12)| | +|**\f**|caracterul chr(12)| 
-|**\n**|caracterul de linie nouă chr(10)| | +|**\n**|caracterul de linie nouă chr(10)| 
-|**\r**|caracterul chr(13)| | +|**\r**|caracterul chr(13)| 
-|**\t**|caracterul tabulator chr(9)| | +|**\t**|caracterul tabulator chr(9)| 
-|**\v**|caracterul chr(11)| | +|**\v**|caracterul chr(11)| 
-|**\xhhhh**|un caracter Unicode cu codul exprimat în sistemul hexazecimal cu numărul hhhh (între 0x0000 și 0xFFFF)| | +|**\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)| | +|**\0ooo**|un caracter ASCII/Latin1 având codul exprimat în sistemul octal ooo (între 0 și 0377)| 
-|**.** (punct)|orice caracter, inclusiv caracterul linie nouă|"să**niu**ș"|"n.u"+|**.** (punct)|orice caracter, inclusiv caracterul linie nouă| 
-|**\d**|o cifră|""|""+|**\d**|o cifră| 
-|**\D**|un caracter care nu este o cifră|""|""+|**\D**|un caracter care nu este o cifră| 
-|**\s**|un caracter de spațiere|""|""+|**\s**|un caracter de spațiere| 
-|**\S**|un caracter care nu este unul de spațiere|""|""+|**\S**|un caracter care nu este unul de spațiere| 
-|**\w**|o cifră, o literă sau caracterul '_'|""|""+|**\w**|o cifră, o literă sau caracterul '_'
-|**\W**|un caracter care nu este 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)|""|""|+|**\1 \2 ... \9**|referință din urmă (același text capturat de ultimul grup de capturare)|
  
 ==== Seturi de caractere ==== ==== Seturi de caractere ====
Line 54: Line 53:
 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". 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 lor. De exemplu expresia "**(bla)+**" va captura oricâte serii consecutive de "bla", dar minim una. Texte care se potrivesc acestei expresii pot fi: "bla", "blabla", "blablablablabla" etc.+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".| 
  
-Grupurile de captură permit utilizarea referințelor 
  
ro/regularexpressions.1504654247.txt.gz · Last modified: 2020/02/28 10:46 (external edit)