Ghidul pentru începători pentru expresii regulate cu Python

Ghidul pentru începători pentru expresii regulate cu Python

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 din cauza 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.

cea mai bună aplicație de muzică gratuită pentru Android

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 caracterele complexe precum $, *, +, {etc. ajută la potrivirea de ordin superior.





  1. Asterisc (*): Potriveste 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.
  2. Mai multe (+): 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 cu ab.
  3. 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.
  4. Țeavă (|): Folosit ca binar SAU operator. Se potrivește cu oricare dintre personajele care preced și care succed la pipă. De exemplu, a | b se va potrivi fie cu a, fie cu b.
  5. 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.
  6. Morcov (^): Se potrivește cu primul caracter din model. De exemplu, ^ Ra va potrivi cuvinte începând cu Afară precum Rabbit, Raccoon și Random.
  7. 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.
  8. 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:

  1. LA: Returnează o potrivire dacă caracterele următoare sunt prezente la începutul șirului. De exemplu, AThe va potrivi cuvinte care încep cu The precum The, Them, They etc.
  2. 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.
  3. B: Returnează o potrivire dacă caracterul nu este găsit la începutul sau la sfârșitul unui cuvânt.
  4. d: Potrivește caracterele numerice prezente în șir. De exemplu, / d * se va potrivi cu numere precum 1, 12, 1232 etc.
  5. D: Potrivește caractere nenumerice din șir. / D se va potrivi cu a, b, c, f etc.
  6. s: Se potrivește cu un caracter spațial în text.
  7. S: Se potrivește cu un caracter care nu este spațiu alb în text.
  8. în: Returnează o potrivire dacă șirul conține caractere alfanumerice, inclusiv subliniere. De exemplu, în se va potrivi cu a, b, c, d, 1, 2, 3 etc.
  9. ÎN: Returnează o potrivire dacă șirul nu conține caractere alfanumerice sau subliniere.
  10. CU: 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 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()

The 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ă:

re.match(pattern, string)

...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', 'This sentence contains a Word')
print(match)

The r caracterul dinaintea șirului înseamnă șir brut.

Ieșire:

None

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', 'Word is hard to read')
print(match.group(0))

Ieșire:

Word

The 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', 'This sentence contains a Word. Word is hard to read.')
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.

Word

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', 'This sentence contains a Word. Word is hard to read.')
for elem in match:
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', 'This word and that and this are different.')
print(split)

Ieșire:

['This word', 'that', 'this are different.']

Sub ()

The sub () metoda permite utilizatorului să înlocuiască un cuvânt specific în locul unui model. Este nevoie de următoarele argumente.

re.sub(pattern, replacement, string)

Luați în considerare acest fragment de cod:

import re
result = re.sub(r'and', 'or', 'Dave and Harry must be punished.')
print(result)

Ieșire:

Dave or Harry must be punished.

Compila()

The 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 depozitul de text specificat pentru modelele potrivite.

import re
pattern = re.compile('Python')
match = pattern.findall('Python is a great language for writing scripts. Python is easy to learn.')
print(match)

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.

Acțiune Acțiune Tweet E-mail Foaia de înșelăciuni Python RegEx pentru programatorii în devenire

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
Subiecte asemănătoare
  • Programare
  • Programare
  • Piton
Despre autor Deepesh Sharma(79 articole publicate)

Deepesh este Junior Editor pentru Linux la MUO. El scrie ghiduri informaționale pe Linux, cu scopul de a oferi o experiență fericită tuturor noilor veniți. Nu sunt sigur de filme, dar dacă vrei să vorbești despre tehnologie, el este tipul tău. În timpul liber, îl poți găsi citind cărți, ascultând diferite genuri muzicale sau cântând la chitară.

Mai multe de la Deepesh Sharma

Aboneaza-te la newsletter-ul nostru

Alăturați-vă newsletter-ului pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!

Faceți clic aici pentru a vă abona