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!!