Treci la conținutul principal

Python RegEx

O expresie regulată, pe scurt RegEx, este o serie de caractere care descrie un model de căutare.

Cu ea poți testa dacă un șir conține acel model.


Modulul RegEx

În Python, expresiile regulate sunt gestionate de re, un pachet încorporat.

Începe prin a-l importa:

Exemplu

main.py
import re

RegEx în Python

După ce ai importat re, expresiile regulate sunt gata de folosit:

Exemplu

Verifică dacă șirul începe cu „The” și se termină cu „Spain”:
Prompt
Importă modulul re și caută într-un șir pentru a vedea dacă începe cu „The” și se termină cu „Spain”. Folosește re.search() cu modelul "^The.*Spain$".
Ieșire: program Python complet

Funcții RegEx

Ca să cauți potriviri într-un șir, modulul re îți pune la dispoziție aceste funcții:

  • findall - Returnează o listă cu toate potrivirile
  • search - Returnează un obiect Match când există o potrivire oriunde în șir
  • split - Taie șirul la fiecare potrivire și returnează o listă cu bucățile
  • sub - Înlocuiește una sau mai multe potriviri cu un șir ales de tine

Metacaractere

Un metacaracter este un caracter cu o semnificație specială:

  • [] - Definește un set de caractere
  • \ - Începe o secvență specială sau escapează un caracter special
  • . - Se potrivește cu orice caracter, în afară de linie nouă
  • ^ - Se potrivește la început
  • $ - Se potrivește la sfârșit
  • * - Zero sau mai multe repetări
  • + - Una sau mai multe repetări
  • ? - Zero sau o repetare
  • {} - Exact numărul de repetări pe care îl specifici
  • | - O variantă sau cealaltă
  • () - Capturează și grupează

Indicatori (flags)

Indicatorii adăugați la un model schimbă felul în care se comportă o expresie regulată.

  • re.ASCII (re.A) - Se potrivește doar cu caractere ASCII
  • re.DEBUG - Afișează informații de depanare
  • re.DOTALL (re.S) - Face caracterul . să se potrivească cu orice, inclusiv cu liniile noi
  • re.IGNORECASE (re.I) - Ignoră literele mari și mici la potrivire
  • re.MULTILINE (re.M) - Se potrivește la începutul și la sfârșitul fiecărei linii
  • re.NOFLAG - Arată că acest model nu are niciun indicator setat
  • re.UNICODE (re.U) - Dă potriviri Unicode
  • re.VERBOSE (re.X) - Permite spații albe și comentarii în interiorul unui model

Secvențe speciale

Dacă pui un \ în fața anumitor caractere, obții o secvență specială, care are propria semnificație specială. Acestea sunt cele disponibile:

  • \A - Găsește o potrivire doar când caracterele date deschid șirul
  • \b - Găsește o potrivire când caracterele date încep sau încheie un cuvânt
  • \B - Găsește o potrivire când caracterele date apar, dar NU la începutul sau la sfârșitul unui cuvânt
  • \d - Găsește o potrivire pentru orice cifră (0-9) din șir
  • \D - Găsește o potrivire pentru orice din șir care NU este cifră
  • \s - Găsește o potrivire pentru orice caracter spațiu alb din șir
  • \S - Găsește o potrivire pentru orice din șir care NU este spațiu alb
  • \w - Găsește o potrivire pentru orice caracter de cuvânt din șir
  • \W - Găsește o potrivire pentru orice din șir care NU este caracter de cuvânt
  • \Z - Găsește o potrivire doar când caracterele date închid șirul

Seturi

Un set este un grup de caractere între paranteze pătrate [] și are și el o semnificație specială:

  • [arn] - Se potrivește cu unul dintre caracterele enumerate: a, r sau n
  • [a-n] - Se potrivește cu orice literă mică aflată în alfabet între a și n
  • [^arn] - Se potrivește cu orice caracter, în afară de a, r și n
  • [0123] - Se potrivește cu una dintre cifrele enumerate: 0, 1, 2 sau 3
  • [0-9] - Se potrivește cu orice cifră de la 0 până la 9
  • [0-5][0-9] - Se potrivește cu orice număr de două cifre de la 00 până la 59
  • [a-zA-Z] - Se potrivește cu orice literă de la a la z, mică SAU mare
  • [+] - Într-un set, caracterele +, *, ., |, (), $ și {} își pierd semnificația specială, așa că [+] caută pur și simplu un + literal în șir

Funcția findall()

Funcția findall() adună toate potrivirile într-o listă, care le păstrează în ordinea în care au fost găsite.

Când nu există nicio potrivire, primești o listă goală:

Exemplu

Afișează toate potrivirile sub formă de listă:
Prompt
Folosește re.findall() pentru a găsi toate aparițiile lui „ai” în „The rain in Spain”. Afișează lista de potriviri.
Ieșire: program Python complet

Exemplu

Dacă nu există nicio potrivire de adunat, lista revine goală:
Prompt
Folosește re.findall() pentru a căuta „Portugal” în „The rain in Spain”. Afișează rezultatul (listă goală când nu există nicio potrivire).
Ieșire: program Python complet

Funcția search()

Funcția search() parcurge șirul și, când găsește o potrivire, îți dă un obiect Match.

Nu contează dacă în șir există mai multe potriviri, pentru că primești doar prima:

Când nu există nicio potrivire, primești valoarea None:

Exemplu

Găsește unde se află primul caracter spațiu alb din șir:
Prompt
Folosește re.search() pentru a găsi primul caracter spațiu alb în „The rain in Spain”. Afișează poziția lui folosind .start().
Ieșire: program Python complet

Exemplu

Fă o căutare care nu găsește nimic:
Prompt
Folosește re.search() pentru a căuta „Portugal” în „The rain in Spain”. Afișează rezultatul (None când nu există nicio potrivire).
Ieșire: program Python complet

Funcția split()

Funcția split() împarte șirul la fiecare potrivire și returnează bucățile într-o listă:

Parametrul maxsplit limitează numărul de împărțiri efectuate:

Exemplu

Împarte șirul la fiecare caracter spațiu alb:
Prompt
Folosește re.split() pentru a împărți „The rain in Spain” la fiecare caracter spațiu alb. Afișează lista rezultată.
Ieșire: program Python complet

Exemplu

Împarte șirul doar la primul caracter spațiu alb:
Prompt
Folosește re.split() pentru a împărți „The rain in Spain” doar la prima apariție (maxsplit=1). Afișează rezultatul.
Ieșire: program Python complet

Funcția sub()

Funcția sub() pune textul ales de tine în locul fiecărei potriviri:

Parametrul count limitează numărul de înlocuiri efectuate:

Exemplu

Pune numărul 9 în locul fiecărui caracter spațiu alb:
Prompt
Folosește re.sub() pentru a înlocui fiecare spațiu alb cu „9” în „The rain in Spain”. Afișează rezultatul.
Ieșire: program Python complet

Exemplu

Schimbă doar primele 2 caractere spațiu alb:
Prompt
Folosește re.sub() pentru a înlocui primele 2 caractere spațiu alb cu „9” în „The rain in Spain”. Afișează rezultatul.
Ieșire: program Python complet

Obiectul Match

Un obiect Match păstrează detalii despre o căutare și despre ce a găsit aceasta.

Notă: Când nu există nicio potrivire, primești valoarea None și niciun obiect Match.

Ca să ajungi la aceste detalii, folosește proprietățile și metodele obiectului:

  • .span() dă un tuplu cu locul unde începe potrivirea și locul unde se termină
  • .string returnează șirul pe care l-ai transmis funcției
  • .group() returnează textul care s-a potrivit

Exemplu

Fă o căutare care produce un obiect Match:
Prompt
Folosește re.search() pentru a căuta „ai” în „The rain in Spain”. Afișează obiectul Match returnat.
Ieșire: program Python complet

Exemplu

Afișează pozițiile de început și de sfârșit ale primei potriviri:
Prompt
Caută un cuvânt care începe cu „S” folosind r"\bS\w+" în „The rain in Spain”. Afișează intervalul potrivirii folosind .span().
Ieșire: program Python complet

Exemplu

Afișează șirul dat funcției:
Prompt
Caută un cuvânt care începe cu „S” folosind r"\bS\w+" în „The rain in Spain”. Afișează șirul original folosind .string.
Ieșire: program Python complet

Exemplu

Afișează doar textul care s-a potrivit:
Prompt
Caută un cuvânt care începe cu „S” folosind r"\bS\w+" în „The rain in Spain”. Afișează textul potrivit folosind .group().
Ieșire: program Python complet