Scurt pentru expresia regulată, un regex este un șir de text care vă permite să creați modele care ajută la potrivirea, localizarea și gestionarea textului. Perl este un exemplu excelent de limbaj de programare care utilizează expresii regulate. Cu toate acestea, singurul dintre numeroasele locuri în care puteți găsi expresii regulate. Expresii regulate pot fi de asemenea folosite din linia de comandă și în editorii de text pentru a găsi textul într-un fișier.
Când încerci mai întâi să înțelegi expresiile regulate, pare ca și cum ar fi o limbă diferită. Cu toate acestea, stăpânirea expresiilor regulate vă poate salva mii de ore dacă lucrați cu text sau trebuie să analizați cantități mari de date. Mai jos este un exemplu de expresie regulată cu fiecare dintre componentele sale etichetate. Această expresie regulată este prezentată și în exemplele de programare Perl afișate mai târziu în această pagină.

Elementele de bază ale expresiilor regulate (foaie de înșelătorie)
Privind exemplul de mai sus poate fi copleșitor. Cu toate acestea, odată ce înțelegeți sintaxa de bază a modului în care funcționează comenzile expresiei regulate, puteți citi exemplul de mai sus ca și cum ați citi această propoziție. Din păcate, nu toate programele, comenzile și limbile de programare utilizează aceleași expresii regulate, dar toate au asemănări.
Caracter | Ce face? | Exemplu | Chibrituri |
---|---|---|---|
^ | Se potrivește începutul liniei | ^ abc | abc, abcdef .., abc123 |
$ | Se potrivește cu sfârșitul liniei | abc $ | meu: abc, 123abc, abc |
. | Potrivi orice personaj | AC | abc, asg, a2c |
| | Operatorul OR | abc | xyz | abc sau xyz |
(...) | Capturați ceva potrivit | (A) b (c) | Captează "a" și "c" |
(:? ...) | Grupul fără capturare | (A) b (: c) | Captează "a" dar numai grupuri "c" |
[...] | Se potrivește cu orice conținut conținut în paranteze | [Abc] | a, b sau c |
[^ ...] | Se potrivește cu tot ce nu este conținut în paranteze | [^ Abc] | xyz, 123, 1de |
[Az] | Se potrivește cu orice caracter între "a" și "z" | [Bz] | bc, minte, xyz |
{X} | Suma exactă "x" de ori pentru a se potrivi | (Abc) {2} | abcabc |
{X, } | Se potrivește "x" de ori sau mai mult | (Abc) {2} | abcabc, abcabcabc |
{X y} | Se potrivește între orele "x" și "y". | (A) {2, 4} | aa, aaa, aaaaa |
* | Un meci greu care se potrivește cu totul în locul poziției * | ab * c | abc, abbcc, abcdc |
+ | Se potrivește caracterul înainte de + de una sau de mai multe ori | a + c | ac, aac, aaac, |
? | Împacă personajul înainte de? zero sau de o dată. De asemenea, folosit ca un meci non-lacom | ab? c | ac, abc |
\ | Scapa de caracter după întoarcere înapoi sau crea o secvență de evadare. | o \ sc | AC |
Caracterele de evacuare (secvența de evacuare)
Notă: caracterele de evacuare sunt sensibile la minuscule.
Caracter | Ce face? |
---|---|
\ | Orice personaj care nu este menționat mai jos, precedat de un \ va fi scăpat. De exemplu, \. se potrivește cu o perioadă și nu îndeplinește funcția menționată mai sus. Caracterele care trebuie scapate sunt () [] {} ^ $. | * +? \ |
\ 0 | Null caracter |
\A | Potrivi un clopot sau alarma. |
\ b | Limita de limbaj în majoritatea sau înapoi |
\ B | Limita fără limbaj |
\ d | Potrivi orice cifră zecimală (0-9) |
\ D | Se potrivesc cu orice altă cifră |
\ e | Se potrivește o scăpare |
\ f | Potriviți un flux de formular |
\ n | Se potrivește cu o linie nouă |
\ Q ... \ E | Ignoră orice semnificație specială în ceea ce se potrivește. |
\ r | Potriviți un retur de cărucior |
\ s | Se potrivește un caracter spațiu (spațiu, \ t, \ r, \ n) |
\ S | Se potrivește cu orice caracter spațiu alb |
\ t | Potriviți o filă |
\ v | Potriviți o filă verticală |
\ w | Se potrivește cu orice caracter cu un singur cuvânt [a-zA-Z_0-9] |
\ W | Se potrivește cu un caracter non-cuvânt |
Expresii regulate
În afara expresiei regulate (la sfârșit), pot fi folosite steaguri pentru a ajuta la potrivirea modelului.
Caracter | Ce face? |
---|---|
eu | Ignorați cazul (literele mari și mici) |
m | Match multi-line |
s | Se potrivesc cu liniile noi |
X | Permiteți spații și comentarii |
J | Numele grupelor duplicate este permis |
U | Meciul Ungreedy |
Perl limbaj de programare regulat exemple de expresie
Mai jos sunt câteva exemple de expresii regulate și de potrivire a modelului în Perl. Multe dintre aceste exemple sunt similare sau similare cu alte limbi de programare și programe care suportă expresii regulate.
$ date = ~ s / date proaste / date bune / i;
Exemplul de mai sus înlocuiește orice "date nepotrivite" cu "date bune" utilizând o potrivire insensibilă la caz. Deci, dacă variabila de date $ a fost "Aici sunt date proaste", ar deveni "Aici sunt date bune".
$ date = ~ s / a / A /;
Acest exemplu înlocuiește orice litere mici cu un majuscule A. Deci, dacă datele $ ar fi "exemplu", ar deveni "exAmple".
$ date = ~ s / [az] / * /;
Exemplul de mai sus înlocuiește orice literă mică, un z, cu un asterisc. Deci, dacă datele $ ar fi "Exemplu", ar deveni "E ******".
$ date = ~ s / e $ / es /;
Acest exemplu utilizează caracterul $, care spune expresiei regulate să se potrivească cu textul înainte de sfârșitul șirului. Deci, dacă datele $ ar fi "exemplu", ar deveni "exemple".
$ date = ~ s /\./!/;
În exemplul de mai sus, înlocuim o perioadă cu un semn de exclamare. Deoarece perioada este un meta-caracter dacă ați introdus doar o perioadă fără \ (escape), este tratată ca orice caracter. În acest exemplu, dacă datele $ au fost "exemplu". ar deveni "exemplu!", cu toate acestea, dacă nu ați avea evadarea, ea va înlocui fiecare personaj și va deveni "!!!!!!!!"
$ date = ~ s / ^ e / E /;
În cele din urmă, în acest exemplu de mai sus, cartea (^) spune expresia regulată pentru a se potrivi cu ceva de la începutul liniei. În acest exemplu, acest lucru ar corespunde oricărei litere mici de la începutul liniei și va fi înlocuit cu un capital E. Prin urmare, dacă datele $ ar fi "exemplu", ar deveni "Exemplu".
Sfat: Dacă doriți să explorați expresii regulate chiar mai mult în comenzi precum grep sau expresii regulate în limbajul de programare, verificați cartea O'Reilly "Mastering expressions regular".
Acronime pentru computer, Secvență de evacuare, Expresie, Glob, Meta-caracter, Termeni de programare, Tilde, Wildcard