Dacă sunteți programator, sunt șanse să știți deja ce sunt expresiile regulate (regex). Modelele Regex au fost implementate în aproape fiecare limbaj de programare principal, dar totuși, puterea și versatilitatea acestor modele nu sunt recunoscute de majoritatea dezvoltatorilor.
Acest ghid este despre expresii regulate și modul în care le puteți utiliza în limbajul de programare Python.
Ce sunt expresiile regulate?
Expresiile regulate sunt modele care ajută un utilizator să potrivească combinațiile de caractere din fișiere text și șiruri. Puteți utiliza expresii regulate pentru a filtra sau găsi un model specific în ieșirea unei comenzi sau a unui document.
Există diverse cazuri de utilizare a expresiilor regulate, cea mai renumită fiind comanda grep din Linux. Alte aplicații includ filtrarea informațiilor, cum ar fi extragerea adreselor de e-mail și a numerelor de telefon dintr-un depozit de date.
Principalul motiv pentru care mulți dezvoltatori se îndepărtează de expresiile regulate este lipsa de conștientizare cu privire la puterea potrivirii tiparelor. Unii consideră că expresiile regulate sunt confuze datorită cantității mari de caractere și secvențe utilizate în modele.
Oricare ar fi motivul, expresiile regulate sunt și vor fi unul dintre cele mai importante aspecte ale programării despre care ar trebui să știe toată lumea.
Expresii regulate: potrivire de caractere și secvențe
Regex este un limbaj cu totul nou în sine. Un motor regex interpretează modele formate din mai multe caractere echipate cu semnificații specifice. Literalele de bază, cum ar fi caracterele alfanumerice, se potrivesc. Dar personaje complexe precum $, *, +, {etc. ajută la potrivirea de ordin superior.
- Asterisc (*): Potrivește caracterul precedent de zero sau de mai multe ori. Înțelesul literal al personajului ar fi „Element multiplicat de n ori”. De exemplu, dacă expresia regulată este abc *, șirurile potrivite vor fi ab, abc, abcc, abccc, abcccc etc. Expresia [bc] * se va potrivi cu bc, bcbc, bcbc etc.
- Plus (+): Potriveste caracterul precedent de una sau de mai multe ori. Funcționarea + caracterul este similar cu *, cu exceptia + caracterul omite tiparul dacă personajul nu apare. De exemplu, abc + se va potrivi cu abc, abcc, abccc etc. dar nu ab.
- Semnul întrebării (?): Se potrivește cu caracterul precedent zero sau cu o singură dată. De exemplu, modelul abc? se va potrivi doar cu ab și abc.
- Țeavă (|): Folosit ca binar SAU operator. Potrivește oricare dintre personajele care preced și care succed la pipă. De exemplu, a | b se va potrivi fie cu a, fie cu b.
- Punct (.): Se potrivește cu un personaj a cărui identitate este necunoscută. De exemplu, a.c se va potrivi cu aac, abc, acc, a2c și așa mai departe.
- Morcov (^): Se potrivește cu primul caracter din model. De exemplu, ^ Ra va potrivi cuvinte începând cu Ra precum Rabbit, Raccoon și Random.
- Dolar ($): Se potrivește cu ultimul caracter din model. De exemplu, un $ va potrivi cuvintele care se termină cu un precum Van, Dan și Plan.
- Cratimă (-): Folosit pentru a defini o gamă de caractere. De exemplu, [0-9] se va potrivi cu toate caracterele numerice dintr-o singură cifră.
Secvențele speciale utilizate în modele de expresie regulată sunt:
- \A: Returnează o potrivire dacă caracterele următoare sunt prezente la începutul șirului. De exemplu, \ AThe va potrivi cuvinte care încep cu precum The, Them, They etc.
- \ b: Returnează o potrivire dacă personajul se găsește fie la începutul, fie la sfârșitul unui cuvânt. De exemplu, \ bmad și nebun \ b va potrivi cuvinte precum făcut și nomad respectiv.
- \ B: Returnează o potrivire dacă personajul nu este găsit la începutul sau la sfârșitul unui cuvânt.
- \ d: Potrivește caracterele numerice prezente în șir. De exemplu, /d* se va potrivi cu numere precum 1, 12, 1232 etc.
- \ D: Potrivește caractere nenumerice din șir. / D se va potrivi cu a, b, c, f etc.
- \ s: Potrivește un caracter spațial în text.
- \ S: Se potrivește cu un caracter care nu este spațiu alb în text.
- \ w: Returnează o potrivire dacă șirul conține caractere alfanumerice, inclusiv subliniere. De exemplu, \ w se va potrivi cu a, b, c, d, 1, 2, 3 etc.
- \ W: Returnează o potrivire dacă șirul nu conține caractere alfanumerice sau sublinieri.
- \ Z: Potrivește caractere la sfârșitul unui șir. De exemplu, sfârșit \ Z va potrivi cuvintele care se termină cu Sfârșit precum îndoirea, repararea, îngrijirea etc.
Metode Python pentru expresii regulate
În Python, re biblioteca oferă toate funcțiile și utilitățile necesare pentru a implementa regex în programele dvs. Nu trebuie să descărcați biblioteca utilizând pip deoarece vine preinstalat cu interpretul Python.
Pentru a importa fișierul re din Python, adăugați următorul cod scriptului:
import re
Rețineți că, în timp ce transmiteți expresii regulate în Python, folosim șiruri brute, deoarece acestea nu interpretează caractere speciale, cum ar fi \ n și \ t diferit.
Meci()
re.match () metoda din Python returnează un obiect regex dacă programul găsește o potrivire la începutul șirului specificat. Această funcție ia două argumente de bază:
ReMatch (model, șir)
...Unde model este expresia regulată și şir este textul care trebuie căutat.
Aruncați o privire la fragmentul de cod de mai jos.
import re
match = re.match (r'Word ', "Această propoziție conține un cuvânt")
imprima (potriveste)
r caracterul dinaintea șirului înseamnă șir brut.
Ieșire:
Nici unul
Codul menționat mai sus revine Nici unul deoarece Cuvânt nu a fost prezent la începutul șirului.
Dacă se găsește o potrivire, o puteți imprima folosind grup() metoda care aparține obiectului regex.
import re
match = re.match (r'Word ', „Cuvântul este greu de citit”)
print (match.group (0))
Ieșire:
Cuvânt
Căutare()
cercetare() metoda ia argumente similare cu re.match (). În timp ce meciul () returnează doar meciurile prezente la începutul șirului, căutare() va returna meciurile găsite la orice index din șir.
import re
match = re.search (r'Word ', "Această propoziție conține un cuvânt. Cuvântul este greu de citit. ")
print (match.group (0))
Rețineți că Meci() și căutare() metodele vor returna doar o potrivire de tipar. În codul menționat mai sus, Cuvânt apare de două ori. Cu exceptia căutare() funcția se va potrivi doar cu prima apariție a cuvântului.
Cuvânt
Găsiți toate()
După cum puteți ghici deja, Găsiți toate() metoda returnează fiecare potrivire posibilă în șir.
import re
match = re.search (r'Word ', "Această propoziție conține un cuvânt. Cuvântul este greu de citit. ")
pentru elem în meci:
print (elem)
În loc să returneze un obiect regex, funcția findall () returnează o listă cu toate meciurile. Puteți itera prin listă folosind un pentru bucla în python.
Despică()
Dacă doriți să împărțiți un șir în sub-șiruri folosind un model ca delimitator, atunci Despică() funcția este cea de care aveți nevoie.
import re
split = re.split (r'and ', "Acest cuvânt și acela și acesta sunt diferite.")
print (split)
Ieșire:
[„Acest cuvânt”, „acel”, „acesta este diferit.”]
Sub ()
sub () metoda permite utilizatorului să înlocuiască un cuvânt specific în locul unui model. Este nevoie de următoarele argumente.
re.sub (model, înlocuire, șir)
Luați în considerare acest fragment de cod:
import re
result = re.sub (r'and ',' or ', „Dave și Harry trebuie pedepsiți”.)
print (rezultat)
Ieșire:
Dave sau Harry trebuie pedepsiți.
Compila()
re.compile () metoda în re biblioteca permite utilizatorului să stocheze în memorie o versiune compilată a modelului de expresie regulată. Apoi, utilizând obiectul compilat, utilizatorul poate filtra rapid dump-ul de text specificat pentru modelele potrivite.
import re
pattern = re.compile ('Python')
match = pattern.findall ("Python este un limbaj excelent pentru scrierea de scripturi. Python este ușor de învățat. ")
imprima (potriveste)
Această funcție este utilizată în principal pentru salvarea tiparelor care consumă resurse și necesită mult timp pentru a rula. Compilarea și salvarea modelului ca obiect rezolvă în prealabil această problemă.
Profitați de puterea Regex cu Python
Când lucrați cu fișiere text și ieșire, regex este un instrument excelent pe care îl aveți la dispoziție. Puteți scrie rapid un cod pentru a filtra sau înlocui modele specifice din document.
Memorarea tuturor personajelor și potrivirea secvențelor poate fi dificilă dacă abia începeți cu regex. Pentru a obține mai bine expresiile regulate, trimiterea la o listă de caractere, metode și secvențe din când în când vă va ajuta cu siguranță pe termen lung.
Utilizați această listă de expresii regulate Python, astfel încât să puteți obține mai bine la utilizarea acestui limbaj de programare versatil.
Citiți în continuare
- Programare
- Programare
- Piton
Deepesh este Junior Editor pentru Linux la MUO. Scrie conținut informațional pe internet de peste 3 ani. În timpul liber, îi place să scrie, să asculte muzică și să cânte la chitară.
Aboneaza-te la newsletter-ul nostru
Alăturați-vă newsletter-ului pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!
Încă un pas…!
Vă rugăm să confirmați adresa de e-mail în e-mailul pe care tocmai vi l-am trimis.