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
Next revision Both sides next revision
ro:regularexpressions [2017/09/05 17:30]
junior-root
ro:regularexpressions [2017/09/06 07:03]
junior-root [Abrevieri de caractere]
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ă+^Element^Potrivire^ 
-|**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.txt · Last modified: 2020/02/28 10:46 (external edit)