This is an old revision of the document!
Regular Expressions are just normal strings but have a specific format used in searching and replacing text. O expresie regulată, sau “regex”, este un model pentru potrivirea substringurilor într-un text. Acest lucru este util în multe contexte, de exemplu,
Element | Potrivire | Text de căutat și potriviri | Expresie regulată |
---|---|---|---|
c | un caracter, atâta timp cât acesta nu are o altă semnificație în expresiile regulate | “un șoricel” | “ori” |
\c | caută o potrivire cu caracterul care urmează semnului '\'. Util pentru a căuta caractere care singure au un rol special (ex. '.', '?'…) | “Semne:!@#?#%?“ | “\?” |
\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ă | “săniuș” | “n.u” |
\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) | ”“ | ”“ |
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:
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.
Î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.
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 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 utilizarea referințelor