logo

Expresie regulată (RegEx) în Python cu exemple

A Expresie regulată sau RegEx este o secvență specială de caractere care utilizează un model de căutare pentru a găsi un șir sau un set de șiruri.

Poate detecta prezența sau absența unui text prin potrivirea acestuia cu un anumit model și, de asemenea, poate împărți un model în unul sau mai multe submodare.



Modulul Regex în Python

Python are un modul încorporat numit re care este folosit pentru expresii regulate în Python. Putem importa acest modul folosind instrucțiunea import .

Exemplu: Importul re modul în Python

Python3








# importing re module> import> re>

>

>

Cum se utilizează RegEx în Python?

Puteți utiliza RegEx în Python după importarea re modulului.

Exemplu:

Acest cod Python folosește expresii regulate pentru a căuta cuvântul portal în șirul dat și apoi tipărește indicii de început și de sfârșit ai cuvântului potrivit în șir.

Python3




import> re> > s>=> 'techcodeview.com: A computer science portal for geeks'> > match>=> re.search(r>'portal'>, s)> > print>(>'Start Index:'>, match.start())> print>(>'End Index:'>, match.end())>

>

>

Ieșire

Start Index: 34 End Index: 40>

Notă: Aici caracterul r (r’portal’) înseamnă brut, nu regex. Șirul brut este ușor diferit de un șir obișnuit, nu va interpreta caracterul ca un caracter de escape. Acest lucru se datorează faptului că motorul de expresii regulate folosește caracterul pentru propriul scop de evadare.

Înainte de a începe cu modulul Python regex, să vedem cum să scriem de fapt regex folosind metacaractere sau secvențe speciale.

Metacaracterele

Metacaracterele sunt personajele cu semnificație specială.

Pentru a înțelege analogia RE, metacaracterele sunt utile și importante. Acestea vor fi utilizate în funcțiile modulului re. Mai jos este lista metacaracterelor.

MetaCaractere

Descriere

Folosit pentru a renunța la semnificația specială a caracterului care îl urmează

sisteme de operare mac

[]

Reprezintă o clasă de caractere

^

Se potrivește cu începutul

$

Se potrivește cu finalul

.

Se potrivește cu orice caracter, cu excepția linie nouă

|

Înseamnă SAU (Se potrivește cu oricare dintre caracterele separate prin acesta.

?

Se potrivește cu zero sau cu o apariție

*

Orice număr de apariții (inclusiv 0 apariții)

+

Una sau mai multe apariții

{}

Indicați numărul de apariții ale unei expresii regex precedente pentru a se potrivi.

()

Includeți un grup de Regex

Să discutăm în detaliu fiecare dintre aceste metacaractere:

1. – Backslash

Bara oblică inversă () asigură că caracterul nu este tratat într-un mod special. Aceasta poate fi considerată o modalitate de a scăpa de metacaractere.

De exemplu, dacă doriți să căutați punctul (.) în șir, atunci veți găsi că punctul (.) va fi tratat ca un caracter special, așa cum este unul dintre metacaracterele (după cum se arată în tabelul de mai sus). Deci, pentru acest caz, vom folosi backslash() chiar înaintea punctului(.), astfel încât să-și piardă specialitatea. Consultați exemplul de mai jos pentru o mai bună înțelegere.

Exemplu:

Prima căutare ( re.search(r'.', s)> ) se potrivește cu orice caracter, nu doar cu punctul, în timp ce a doua căutare ( re.search(r'.', s)> ) caută și se potrivește în mod specific cu caracterul punct.

Python3




import> re> > s>=> 'geeks.forgeeks'> > # without using> match>=> re.search(r>'.'>, s)> print>(match)> > # using> match>=> re.search(r>'.'>, s)> print>(match)>

>

>

Ieșire

>

2. [] – Paranteze pătrate

Parantezele pătrate ([]) reprezintă o clasă de caractere constând dintr-un set de caractere pe care dorim să le potrivim. De exemplu, clasa de caractere [abc] se va potrivi cu orice a, b sau c.

De asemenea, putem specifica o serie de caractere folosind – în interiorul parantezelor drepte. De exemplu,

  • [0, 3] este eșantion ca [0123]
  • [a-c] este același cu [abc]

De asemenea, putem inversa clasa de caractere folosind simbolul caret(^). De exemplu,

  • [^0-3] înseamnă orice număr, cu excepția 0, 1, 2 sau 3
  • [^a-c] înseamnă orice caracter, cu excepția a, b sau c

Exemplu:

În acest cod, utilizați expresii regulate pentru a găsi toate caracterele din șir care se încadrează în intervalul de la „a” la „m”. The re.findall()> funcția returnează o listă cu toate astfel de caractere. În șirul dat, caracterele care se potrivesc cu acest model sunt: ​​„c”, „k”, „b”, „f”, „j”, „e”, „h”, „l”, „d”, „ g'.

Python3




import> re> > string>=> 'The quick brown fox jumps over the lazy dog'> pattern>=> '[a-m]'> result>=> re.findall(pattern, string)> > print>(result)>

>

>

Ieșire

['h', 'e', 'i', 'c', 'k', 'b', 'f', 'j', 'm', 'e', 'h', 'e', 'l', 'a', 'd', 'g']>

3. ^ – Caret

Simbolul caret (^) se potrivește cu începutul șirului, adică verifică dacă șirul începe cu caracterul(ele) dat sau nu. De exemplu -

  • ^g va verifica dacă șirul începe cu g, cum ar fi geeks, globe, girl, g etc.
  • ^ge va verifica dacă șirul începe cu ge, cum ar fi geeks, geeksforgeeks etc.

Exemplu:

Acest cod folosește expresii regulate pentru a verifica dacă o listă de șiruri începe cu The . Dacă un șir începe cu Este marcat ca Potrivire în caz contrar, este etichetat ca Nu se potrivește.

Python3




import> re> regex>=> r>'^The'> strings>=> [>'The quick brown fox'>,>'The lazy dog'>,>'A quick brown fox'>]> for> string>in> strings:> >if> re.match(regex, string):> >print>(f>'Matched: {string}'>)> >else>:> >print>(f>'Not matched: {string}'>)>

>

>

Ieșire

Matched: The quick brown fox Matched: The lazy dog Not matched: A quick brown fox>

4. $ – dolar

Simbolul dolar($) se potrivește cu sfârșitul șirului, adică verifică dacă șirul se termină cu caracterul(ele) dat sau nu. De exemplu-

  • s$ va verifica șirul care se termină cu un, cum ar fi geeks, ends, s etc.
  • ks$ va verifica șirul care se termină cu ks, cum ar fi geeks, geeksforgeeks, ks etc.

Exemplu:

Acest cod folosește o expresie regulată pentru a verifica dacă șirul se termină cu Lume!. Dacă se găsește o potrivire, se tipărește Potrivire găsită! în caz contrar, se imprimă Potrivirea nu a fost găsită .

java cast int în șir

Python3




import> re> > string>=> 'Hello World!'> pattern>=> r>'World!$'> > match>=> re.search(pattern, string)> if> match:> >print>(>'Match found!'>)> else>:> >print>(>'Match not found.'>)>

>

>

Ieșire

Match found!>

5. . – Punct

Simbolul punct (.) se potrivește doar cu un singur caracter, cu excepția caracterului newline ( ). De exemplu -

  • a.b va verifica șirul care conține orice caracter la locul punctului, cum ar fi acb, acbd, abbb etc.
  • .. va verifica dacă șirul conține cel puțin 2 caractere

Exemplu:

Acest cod folosește o expresie regulată pentru a căuta modelul maro.vulpea în cadrul șirului. Punctul (.>) în model reprezintă orice caracter. Dacă se găsește o potrivire, se tipărește Potrivire găsită! în caz contrar, se imprimă Potrivirea nu a fost găsită .

Python3




import> re> > string>=> 'The quick brown fox jumps over the lazy dog.'> pattern>=> r>'brown.fox'> > match>=> re.search(pattern, string)> if> match:> >print>(>'Match found!'>)> else>:> >print>(>'Match not found.'>)>

>

>

Ieșire

Match found!>

6. | – Sau

Simbolul sau funcționează ca operator sau, ceea ce înseamnă că verifică dacă modelul înainte sau după simbolul sau este prezent sau nu în șir. De exemplu -

  • a|b se va potrivi cu orice șir care conține a sau b, cum ar fi acd, bcd, abcd etc.

7. ? - Semnul întrebării

Semnul întrebării (?) este un cuantificator în expresii regulate care indică faptul că elementul precedent ar trebui să se potrivească cu zero sau o dată. Vă permite să specificați că elementul este opțional, adică poate apărea o dată sau deloc. De exemplu,

  • ab?c va fi potrivit pentru șirul ac, acb, dabc, dar nu va fi potrivit pentru abbc deoarece există două b. În mod similar, nu va fi potrivit pentru abdc, deoarece b nu este urmat de c.

8.* – Steaua

Simbolul stea (*) se potrivește cu zero sau mai multe apariții ale expresiei regex precedând simbolul *. De exemplu -

  • ab*c va fi potrivit pentru șirul ac, abc, abbbc, dabc etc. dar nu va fi potrivit pentru abdc deoarece b nu este urmat de c.

9. + – Plus

Simbolul plus (+) se potrivește cu una sau mai multe apariții ale expresiei regex precedând simbolul +. De exemplu -

  • ab+c va fi potrivit pentru șirul abc, abbc, dabc, dar nu va fi potrivit pentru ac, abdc, deoarece nu există b în ac și b, nu este urmat de c în abdc.

10. {m, n} – Bretele

Acoladele se potrivesc cu orice repetări care preced expresia regex de la m la n ambele inclusiv. De exemplu -

  • a{2, 4} va fi potrivit pentru șirul aaab, baaaac, gaad, dar nu va fi potrivit pentru șiruri precum abc, bc, deoarece există doar un a sau nu a în ambele cazuri.

11. () – Grup

Simbolul de grup este folosit pentru a grupa submodele. De exemplu -

  • (a|b)cd se va potrivi pentru șiruri precum acd, abcd, gacd etc.

Secvențe speciale

Secvențele speciale nu se potrivesc pentru caracterul real din șir, ci indică locația specifică din șirul de căutare unde trebuie să apară potrivirea. Face mai ușor să scrieți modele utilizate în mod obișnuit.

Lista de secvențe speciale

Secvență specială

Descriere

Exemple

A

Se potrivește dacă șirul începe cu caracterul dat

Afor

pentru tocilari

pentru lume



Se potrivește dacă cuvântul începe sau se termină cu caracterul dat. (șir) va verifica începutul cuvântului și (șir) va verifica sfârșitul cuvântului.

ge

tocilari

obține

B

Este opusul , adică șirul nu trebuie să înceapă sau să se termine cu expresia regex dată.

Bge

împreună

forja

d

Se potrivește cu orice cifră zecimală, aceasta este echivalentă cu clasa setată [0-9]

d

123

gee1

D

Se potrivește cu orice caracter fără cifre, acesta este echivalent cu clasa setată [^0-9]

D

tocilari

tocilar1

s

Se potrivește cu orice caracter de spațiu alb.

s

tocilari

a bc a

S

Se potrivește cu orice caracter care nu are spațiu alb

S

șir în întreg în java

un bd

abcd

În

Se potrivește cu orice caracter alfanumeric, acesta este echivalent cu clasa [a-zA-Z0-9_].

În

123

geeKs4

ÎN

Se potrivește cu orice caracter non-alfanumeric.

ÎN

>$

da

CU

Se potrivește dacă șirul se termină cu expresia regex dată

ab

abcdab

bababab

Funcții RegEx

re modulul conține multe funcții care ne ajută să căutăm un șir pentru o potrivire.

Să vedem diverse funcții oferite de acest modul pentru a lucra cu expresii regex în Python.

Funcţie Descriere
re.findall() găsește și returnează toate aparițiile care se potrivesc dintr-o listă
re.compile() Expresiile regulate sunt compilate în obiecte tip model
re.split() Împărțiți șirul în funcție de apariția unui caracter sau a unui model.
re.sub() Înlocuiește toate aparițiile unui caracter sau zgomot cu un șir de înlocuire.
re.escape() Evadează caracterul special
cercetare() Caută prima apariție a caracterului sau modelului

Să vedem funcționarea acestor funcții RegEx cu definiție și exemple:

1. re.găsește()

Returnează toate potrivirile de tipar care nu se suprapun în șir, ca o listă de șiruri. Șirul este scanat de la stânga la dreapta, iar potrivirile sunt returnate în ordinea găsită.

Găsirea tuturor aparițiilor unui model

Acest cod folosește o expresie regulată ( d+> ) pentru a găsi toate secvențele de una sau mai multe cifre din șirul dat. Acesta caută valori numerice și le stochează într-o listă. În acest exemplu, găsește și tipărește numerele 123456789 și 987654321 din șirul de intrare.

Python3




import> re> string>=> '''Hello my Number is 123456789 and> >my friend's number is 987654321'''> regex>=> 'd+'> > match>=> re.findall(regex, string)> print>(match)>

>

>

Ieșire

['123456789', '987654321']>

2. re.compilează()

Expresiile regulate sunt compilate în obiecte model, care au metode pentru diferite operații, cum ar fi căutarea potrivirilor de model sau efectuarea de substituții de șiruri.

Exemplul 1:

Codul folosește un model de expresie regulată [a-e]> pentru a găsi și lista toate literele mici de la „a” la „e” în șirul de intrare Da, spuse domnul Gibenson Stark. Ieșirea va fi ['e', 'a', 'd', 'b', 'e']> , care sunt personajele care se potrivesc.

Piton




import> re> p>=> re.>compile>(>'[a-e]'>)> > print>(p.findall(>'Aye, said Mr. Gibenson Stark'>))>

>

>

Ieșire

['e', 'a', 'd', 'b', 'e', 'a']>

Înțelegerea rezultatului:

  • Prima apariție este „e” în Aye și nu „A”, deoarece este sensibil la majuscule și minuscule.
  • Următoarea apariție este „a” în said, apoi „d” în said, urmată de „b” și „e” în Gibenson, Ultimul „a” se potrivește cu Stark.
  • Bara oblică inversă „” a metacaracterelor are un rol foarte important, deoarece semnalează diverse secvențe. Dacă bara oblică inversă va fi folosită fără semnificația sa specială ca metacaracter, utilizați „”

Exemplul 2: Setarea clasei [s,.] se va potrivi cu orice caracter de spațiu alb, ‘,’ sau, ‘.’ .

Codul folosește expresii regulate pentru a găsi și lista toate cifrele individuale și secvențele de cifre din șirurile de intrare date. Găsește o singură cifră cu d> și secvențe de cifre cu d+> .

Piton




import> re> p>=> re.>compile>(>'d'>)> print>(p.findall(>'I went to him at 11 A.M. on 4th July 1886'>))> > p>=> re.>compile>(>'d+'>)> print>(p.findall(>'I went to him at 11 A.M. on 4th July 1886'>))>

>

>

Ieșire

['1', '1', '4', '1', '8', '8', '6'] ['11', '4', '1886']>

Exemplul 3:

Codul folosește expresii obișnuite pentru a găsi și enumera caractere de cuvinte, secvențe de caractere de cuvinte și caractere non-cuvinte în șirurile de intrare. Oferă liste cu caracterele sau secvențele potrivite.

Piton




import> re> > p>=> re.>compile>(>'w'>)> print>(p.findall(>'He said * in some_lang.'>))> > p>=> re.>compile>(>'w+'>)> print>(p.findall('I went to him at>11> A.M., he> said>*>*>*> in> some_language.'))> > p>=> re.>compile>(>'W'>)> print>(p.findall(>'he said *** in some_language.'>))>

>

>

Ieșire

['H', 'e', 's', 'a', 'i', 'd', 'i', 'n', 's', 'o', 'm', 'e', '_', 'l', 'a', 'n', 'g'] ['I', 'went', 'to', 'him', 'at', '11', 'A', 'M', 'he', 'said', 'in', 'some_language'] [' ', ' ', '*', '*', '*', ' ...>

Exemplul 4:

Codul folosește un model de expresie regulată „ab*” pentru a găsi și lista toate aparițiile lui „ab” urmate de zero sau mai multe caractere „b” în șirul de intrare ababbaabbb. Returnează următoarea listă de potriviri: [‘ab’, ‘abb’, ‘abbb’].

Piton




import> re> p>=> re.>compile>(>'ab*'>)> print>(p.findall(>'ababbaabbb'>))>

>

instalarea lanternei

>

Ieșire

['ab', 'abb', 'a', 'abbb']>

Înțelegerea rezultatului:

  • RE-ul nostru este ab*, care ‘a’ însoțit de orice nr. dintre ‘b’, începând de la 0.
  • Ieșirea „ab”, este validă datorită unui singur „a” însoțit de un singur „b”.
  • Ieșirea „abb”, este validă datorită unui singur „a” însoțit de 2 „b”.
  • Ieșirea „a” este validă datorită unui singur „a” însoțit de 0 „b”.
  • Ieșirea „abbb”, este validă datorită unui singur „a” însoțit de 3 „b”.

3. re.split()

Împărțiți șirul după aparițiile unui caracter sau a unui model, la găsirea acelui model, caracterele rămase din șir sunt returnate ca parte a listei rezultate.

Sintaxa:

re.split(pattern, string, maxsplit=0, flags=0)>

Primul parametru, model denotă expresia regulată, șirul este șirul dat în care modelul va fi căutat și în care are loc divizarea, maxsplit dacă nu este furnizat este considerat a fi zero „0”, iar dacă este furnizată orice valoare diferită de zero, atunci cel mult că apar multe scindări. Dacă maxsplit = 1, atunci șirul se va împărți o singură dată, rezultând o listă cu lungimea 2. Steagurile sunt foarte utile și pot ajuta la scurtarea codului, nu sunt parametri necesari, de exemplu: flags = re.IGNORECASE, în această împărțire , cazul, adică literele mici sau mari, vor fi ignorate.

Exemplul 1:

Împarte un șir folosind caractere și spații non-cuvinte ca delimitatori, returnând cuvinte: ['Words', 'words', 'Words']> . Consideră apostrofele drept caractere non-cuvânt: ['Word', 's', 'words', 'Words']> . Împărțiți folosind caractere și cifre fără cuvinte: ['On', '12th', 'Jan', '2016', 'at', '11', '02', 'AM']> . Împărțiți folosind cifre ca delimitator: ['On ', 'th Jan ', ', at ', ':', ' AM']> .

Piton




from> re>import> split> > print>(split(>'W+'>,>'Words, words , Words'>))> print>(split(>'W+'>,>'Word's words Words'>))> print>(split(>'W+'>,>'On 12th Jan 2016, at 11:02 AM'>))> print>(split(>'d+'>,>'On 12th Jan 2016, at 11:02 AM'>))>

>

>

Ieșire

['Words', 'words', 'Words'] ['Word', 's', 'words', 'Words'] ['On', '12th', 'Jan', '2016', 'at', '11', '02', 'AM'] ['On ', 'th Jan ', ', at ', ':', ' AM']>

Exemplul 2:

Prima instrucțiune împarte șirul la prima apariție a uneia sau mai multor cifre: ['On ', 'th Jan 2016, at 11:02 AM']> . secundă împarte șirul folosind litere mici de la a la f ca delimitatori, fără a ține seama de majuscule: ['', 'y, ', 'oy oh ', 'oy, ', 'ome here'> ]>. Al treilea împarte șirul folosind litere mici de la a la f ca delimitatori, ținând cont de majuscule: ['', 'ey, Boy oh ', 'oy, ', 'ome here']> .

Piton




import> re> print>(re.split(>'d+'>,>'On 12th Jan 2016, at 11:02 AM'>,>1>))> print>(re.split(>'[a-f]+'>,>'Aey, Boy oh boy, come here'>, flags>=>re.IGNORECASE))> print>(re.split(>'[a-f]+'>,>'Aey, Boy oh boy, come here'>))>

>

>

Ieșire

['On ', 'th Jan 2016, at 11:02 AM'] ['', 'y, ', 'oy oh ', 'oy, ', 'om', ' h', 'r', ''] ['A', 'y, Boy oh ', 'oy, ', 'om', ' h', 'r', '']>

4. re.sub()

„sub” din funcție reprezintă SubString, un anumit model de expresie regulată este căutat în șirul dat (al treilea parametru), iar la găsirea modelului subșirului este înlocuit cu repl(2nd parameter), count verifică și menține numărul de ori acest lucru se întâmplă.

Sintaxă:

 re.sub(pattern, repl, string, count=0, flags=0)>

Exemplul 1:

  • Prima declarație înlocuiește toate aparițiile lui „ub” cu „~*” (insensibil la majuscule și minuscule): 'S~*ject has ~*er booked already'> .
  • A doua declarație înlocuiește toate aparițiile lui „ub” cu „~*” (sensibil la majuscule și minuscule): 'S~*ject has Uber booked already'> .
  • A treia declarație înlocuiește prima apariție a lui „ub” cu „~*” (insensibil la majuscule și minuscule): 'S~*ject has Uber booked already'> .
  • Al patrulea înlocuiește „ȘI” cu „&” (indiferent de majuscule și minuscule): 'Baked Beans & Spam'> .

Piton




import> re> print>(re.sub(>'ub'>,>'~*'>,>'Subject has Uber booked already'>,> >flags>=>re.IGNORECASE))> print>(re.sub(>'ub'>,>'~*'>,>'Subject has Uber booked already'>))> print>(re.sub(>'ub'>,>'~*'>,>'Subject has Uber booked already'>,> >count>=>1>, flags>=>re.IGNORECASE))> print>(re.sub(r>'sANDs'>,>' & '>,>'Baked Beans And Spam'>,> >flags>=>re.IGNORECASE))>

>

>

Ieșire

S~*ject has ~*er booked already S~*ject has Uber booked already S~*ject has Uber booked already Baked Beans & Spam>

5. re.subn()

subn() este similar cu sub() în toate privințele, cu excepția modului său de a furniza rezultate. Returnează un tuplu cu un număr de total de înlocuire și noul șir, mai degrabă decât doar șirul.

Sintaxă:

 re.subn(pattern, repl, string, count=0, flags=0)>

Exemplu:

re.subn()> înlocuiește toate aparițiile unui model într-un șir și returnează un tuplu cu șirul modificat și numărul de substituții efectuate. Este util atât pentru substituții care țin cont de majuscule și minuscule.

Piton




import> re> > print>(re.subn(>'ub'>,>'~*'>,>'Subject has Uber booked already'>))> > t>=> re.subn(>'ub'>,>'~*'>,>'Subject has Uber booked already'>,> >flags>=>re.IGNORECASE)> print>(t)> print>(>len>(t))> print>(t[>0>])>

>

>

Ieșire

('S~*ject has Uber booked already', 1) ('S~*ject has ~*er booked already', 2) 2 S~*ject has ~*er booked already>

6. re.escape()

Returnează șirul cu toate caracterele non-alfanumerice backslash, acest lucru este util dacă doriți să potriviți un șir literal arbitrar care poate avea metacaractere de expresie regulată în el.

Sintaxă:

re.escape(string)>

Exemplu:

re.escape()> este folosit pentru a scăpa de caractere speciale dintr-un șir, făcându-l sigur pentru a fi folosit ca model în expresiile regulate. Se asigură că orice caractere cu semnificații speciale în expresiile regulate sunt tratate ca caractere literale.

Piton




import> re> print>(re.escape(>'This is Awesome even 1 AM'>))> print>(re.escape(>'I Asked what is this [a-9], he said ^WoW'>))>

>

>

Ieșire

This is Awesome even 1 AM I Asked what is this [a-9], he said   ^WoW>

7. cercetare()

Această metodă fie returnează None (dacă modelul nu se potrivește), fie un re.MatchObject conține informații despre partea potrivită a șirului. Această metodă se oprește după prima potrivire, deci aceasta este cea mai potrivită pentru testarea unei expresii regulate mai mult decât pentru extragerea datelor.

Exemplu: Căutarea unei apariții a modelului

Acest cod folosește o expresie regulată pentru a căuta un model în șirul dat. Dacă se găsește o potrivire, extrage și tipărește porțiunile potrivite ale șirului.

În acest exemplu specific, caută un model care constă dintr-o lună (litere) urmată de o zi (cifre) în șirul de intrare M-am născut pe 24 iunie. Dacă se găsește o potrivire, tipărește potrivirea completă, luna , și ziua.

Python3




import> re> regex>=> r>'([a-zA-Z]+) (d+)'> > match>=> re.search(regex,>'I was born on June 24'>)> if> match !>=> None>:> >print> (>'Match at index %s, %s'> %> (match.start(), match.end()))> >print> (>'Full match: %s'> %> (match.group(>0>)))> >print> (>'Month: %s'> %> (match.group(>1>)))> >print> (>'Day: %s'> %> (match.group(>2>)))> > else>:> >print> (>'The regex pattern does not match.'>)>

>

>

Ieșire

Match at index 14, 21 Full match: June 24 Month: June Day: 24>

SETURI

A A stabilit este un set de caractere cuprinse între paranteze „[]”. Seturile sunt folosite pentru a potrivi un singur caracter din setul de caractere specificat între paranteze. Mai jos este lista de seturi:

A stabilit Descriere
{n,} Cuantifică caracterul sau grupul precedent și se potrivește cu cel puțin n apariții.
* Cuantifică caracterul sau grupul precedent și se potrivește cu zero sau mai multe apariții.
[0123] Se potrivește cu cifrele specificate (0, 1, 2 sau 3)
[^arn] potriviri pentru orice caracter, CU EXCEPȚIA a, r și n
d Se potrivește cu orice cifră (0-9).
[0-5][0-9] potriviri pentru orice numere din două cifre de la 00 și 59
În Se potrivește cu orice caracter alfanumeric (a-z, A-Z, 0-9 sau _).
[un] Potrivește orice alfabet cu litere mici între a și n.
D Se potrivește cu orice caracter fără cifre.
[arn] se potrivește în cazul în care unul dintre caracterele specificate (a, r sau n) este prezent
[a-zA-Z] se potrivește cu orice caracter între a și z, litere mici SAU majuscule
[0-9] se potrivește cu orice cifră între 0 și 9

Potriviți obiectul

Un obiect Match conține toate informațiile despre căutare și rezultat, iar dacă nu se găsește nicio potrivire, va fi returnat Nimic. Să vedem câteva dintre metodele și atributele utilizate în mod obișnuit ale obiectului potrivire.

1. Obținerea șirului și regex-ului

meci.re atributul returnează expresia regulată transmisă și potrivire.şir attribute returnează șirul trecut.

Exemplu: Obținerea șirului și regex-ului obiectului potrivit

Codul caută litera G la o limită de cuvânt din șir Bun venit la GeeksForGeeks și imprimă modelul expresiei regulate ( res.re> ) și șirul original ( res.string> ) .

Python3




import> re> s>=> 'Welcome to GeeksForGeeks'> res>=> re.search(r>'G'>, s)> > print>(res.re)> print>(res.string)>

>

>

Ieșire

re.compile('G') Welcome to GeeksForGeeks>

2. Obținerea indexului obiectului potrivit

  • metoda start() returnează indexul de pornire al subșirului potrivit
  • metoda end() returnează indexul final al subșirului potrivit
  • Metoda span() returnează un tuplu care conține indexul de început și de sfârșit al subșirului potrivit

Exemplu: Obținerea indexului obiectului potrivit

Codul caută subșirul Gee la granița unui cuvânt din șirul Bine ați venit la GeeksForGeeks și tipărește indexul de început al meciului (res.start()>), indexul final al meciului (res.end()>), și durata meciului (res.span()>).

Python3




import> re> > s>=> 'Welcome to GeeksForGeeks'> > res>=> re.search(r>'Gee'>, s)> > print>(res.start())> print>(res.end())> print>(res.span())>

>

>

Ieșire

11 14 (11, 14)>

3. Obținerea unui subșir potrivit

Metoda group() returnează partea din șir pentru care se potrivesc modelele. Consultați exemplul de mai jos pentru o mai bună înțelegere.

Exemplu: Se obține un subșir potrivit

Codul caută o secvență de două caractere fără cifre, urmate de un spațiu și de litera „t” în șirul Bine ați venit la GeeksForGeeks și tipărește textul potrivit folosind res.group()> .

string la int în java

Python3




import> re> s>=> 'Welcome to GeeksForGeeks'> res>=> re.search(r>'D{2} t'>, s)> print>(res.group())>

>

>

Ieșire

me t>

În exemplul de mai sus, modelul nostru specifică șirul care conține cel puțin 2 caractere care sunt urmate de un spațiu, iar acel spațiu este urmat de un t.

Articol înrudit:

Referinţă:
https://docs.python.org/2/library/re.html

Am discutat despre RegEx în Python, am trecut prin metacaracterele, funcțiile și secvențele speciale din RegEx Python.

Expresia regulată este un concept foarte important în Python, am încercat să-l explicăm într-un mod ușor. Sper să vă ajute în călătoria dvs. Python!!