logo

Regularni izraz (RegEx) v Pythonu s primeri

A Regularni izraz ali RegEx je posebno zaporedje znakov, ki uporablja iskalni vzorec za iskanje niza ali niza nizov.

Zazna lahko prisotnost ali odsotnost besedila tako, da ga poveže z določenim vzorcem, prav tako pa lahko vzorec razdeli na enega ali več podvzorcev.



Modul Regex v Pythonu

Python ima vgrajen modul z imenom re ki se uporablja za regularne izraze v Pythonu. Ta modul lahko uvozimo z uporabo stavka import.

primer: Uvoz re modula v Python

Python3








# importing re module> import> re>

>

>

Kako uporabljati RegEx v Pythonu?

Po uvozu modula re lahko uporabite RegEx v Pythonu.

primer:

Ta koda Python uporablja regularne izraze za iskanje besede portal v danem nizu in nato natisne začetni in končni indeks ujemajoče se besede znotraj niza.

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())>

>

>

Izhod

Start Index: 34 End Index: 40>

Opomba: Tukaj r znak (r'portal') pomeni neobdelan, ne redni izraz. Neobdelani niz se nekoliko razlikuje od navadnega niza, znaka ne bo interpretiral kot ubežnega znaka. To je zato, ker mehanizem regularnih izrazov uporablja znak za lasten namen uhajanja.

Preden začnemo z modulom regularnih izrazov Python, si poglejmo, kako dejansko napisati regularne izraze z uporabo metaznakov ali posebnih zaporedij.

Metaznaki

Metaznaki so znaki s posebnim pomenom.

Za razumevanje analogije RE so metaznaki uporabni in pomembni. Uporabljeni bodo v funkcijah modula re. Spodaj je seznam metaznakov.

Metaznaki

Opis

Uporablja se za opustitev posebnega pomena znaka, ki sledi

sql concat

[]

Predstavljajo razred znakov

^

Ujema se z začetkom

$

Ujema se s koncem

.

Ujema se s katerim koli znakom razen z novo vrstico

|

Pomeni ALI (ujema se s katerim koli znakom, ločenim s tem.

?

Ujema se z nič ali eno pojavitvijo

*

Poljubno število pojavitev (vključno z 0 pojavitvami)

+

Ena ali več pojavitev

{}

Navedite število pojavitev predhodnega regularnega izraza, ki naj se ujema.

()

Obdajte skupino regularnih izrazov

O vsakem od teh metaznakov se pogovorimo podrobneje:

1. – poševnica nazaj

Poševnica nazaj () poskrbi, da znak ni obravnavan na poseben način. To se lahko šteje za način izogibanja metaznakom.

Na primer, če želite poiskati piko (.) v nizu, boste ugotovili, da bo pika (.) obravnavana kot poseben znak, kot je eden od metaznakov (kot je prikazano v zgornji tabeli). V tem primeru bomo torej uporabili poševnico nazaj () tik pred piko (.), da bo izgubila svojo posebnost. Za boljše razumevanje si oglejte spodnji primer.

primer:

Prvo iskanje ( re.search(r'.', s)> ) ujema s katerim koli znakom, ne samo s piko, medtem ko drugo iskanje ( re.search(r'.', s)> ) posebej išče znak obdobja in se ujema z njim.

Python3




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

>

>

Izhod

>

2. [] – Oglati oklepaji

Oglati oklepaji ([]) predstavljajo razred znakov, sestavljen iz niza znakov, ki jih želimo ujemati. Na primer, razred znakov [abc] se bo ujemal s katerim koli posameznim a, b ali c.

Določimo lahko tudi obseg znakov z uporabo – znotraj oglatih oklepajev. na primer

  • [0, 3] je vzorec kot [0123]
  • [a-c] je enako [abc]

Razred znakov lahko tudi obrnemo s simbolom caret(^). na primer

  • [^0-3] pomeni poljubno število razen 0, 1, 2 ali 3
  • [^a-c] pomeni kateri koli znak razen a, b ali c

primer:

V tej kodi uporabljate regularne izraze za iskanje vseh znakov v nizu, ki spadajo v obseg od »a« do »m«. The re.findall()> funkcija vrne seznam vseh takih znakov. V podanem nizu so znaki, ki ustrezajo temu vzorcu: '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)>

>

>

Izhod

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

3. ^ – Caret

Simbol kazalke (^) se ujema z začetkom niza, tj. preveri, ali se niz začne z danimi znaki ali ne. Na primer –

  • ^g bo preveril, ali se niz začne z g, kot so geeks, globus, girl, g itd.
  • ^ge bo preveril, ali se niz začne z ge, na primer geeks, geeksforgeeks itd.

primer:

Ta koda uporablja regularne izraze za preverjanje, ali se seznam nizov začne z The . Če se niz začne z Označeno je kot Ujemanje sicer je označeno kot Ne ujema se.

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}'>)>

>

>

Izhod

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

4. $ – dolar

Simbol za dolar ($) se ujema s koncem niza, tj. preveri, ali se niz konča z danimi znaki ali ne. na primer-

  • s$ bo preveril niz, ki se konča z a, kot so geeks, ends, s itd.
  • ks$ bo preveril niz, ki se konča s ks, kot so geeks, geeksforgeeks, ks itd.

primer:

Ta koda uporablja regularni izraz za preverjanje, ali se niz konča z Svet!. Če se najde ujemanje, se natisne Ujemanje najdeno! sicer pa natisne Ujemanje ni bilo najdeno .

Python3




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

>

>

Izhod

Match found!>

5. . – Pika

Simbol pike(.) se ujema samo z enim znakom, razen znaka za novo vrstico ( ). Na primer –

  • a.b bo preveril niz, ki vsebuje kateri koli znak na mestu pike, kot so acb, acbd, abbb itd.
  • .. bo preveril, ali niz vsebuje vsaj 2 znaka

primer:

Ta koda uporablja regularni izraz za iskanje vzorca rjava.lisica znotraj niza. Pika (.>) v vzorcu predstavlja poljuben znak. Če se najde ujemanje, se natisne Ujemanje najdeno! sicer pa natisne Ujemanje ni bilo najdeno .

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.'>)>

povezovanje z bazo podatkov v Javi

>

>

Izhod

Match found!>

6. | – ali

Simbol Or deluje kot operator ali, kar pomeni, da preverja, ali je vzorec pred ali za simbolom ali prisoten v nizu ali ne. Na primer –

  • a|b se bo ujemal s katerim koli nizom, ki vsebuje a ali b, na primer acd, bcd, abcd itd.

7. ? - Vprašaj

Vprašaj (?) je kvantifikator v regularnih izrazih, ki označuje, da se mora predhodni element ujemati nič ali enkrat. Omogoča vam, da določite, da je element neobvezen, kar pomeni, da se lahko pojavi enkrat ali pa sploh ne. na primer

  • ab?c se bo ujemal z nizom ac, acb, dabc, vendar se ne bo ujemal z abbc, ker obstajata dva b. Podobno se ne bo ujemal za abdc, ker b ne sledi c.

8.* – Zvezdica

Simbol zvezdice (*) se ujema z nič ali več pojavitvami regularnega izraza pred simbolom *. Na primer –

  • ab*c se bo ujemal z nizom ac, abc, abbbc, dabc itd., vendar se ne bo ujemal z abdc, ker b ne sledi c.

9. + – plus

Simbol plus (+) se ujema z eno ali več pojavitvami regularnega izraza pred simbolom +. Na primer –

  • ab+c se bo ujemal za niz abc, abbc, dabc, vendar se ne bo ujemal za ac, abdc, ker ni b v ac in b, ne sledi c v abdc.

10. {m, n} – oklepaji

Oklepaji se ujemajo z vsemi ponovitvami pred regularnim izrazom od m do vključno n. Na primer –

  • a{2, 4} se bo ujemal z nizom aaab, baaaac, gaad, ne bo pa se ujemal z nizi, kot sta abc, bc, ker je v obeh primerih samo en a ali pa ga ni.

11. () – Skupina

Simbol skupine se uporablja za združevanje podvzorcev. Na primer –

  • (a|b)cd se bo ujemal z nizi, kot so acd, abcd, gacd itd.

Posebna zaporedja

Posebna zaporedja se ne ujemajo z dejanskim znakom v nizu, namesto tega povejo specifično lokacijo v iskalnem nizu, kjer mora biti ujemanje. Omogoča lažje pisanje pogosto uporabljenih vzorcev.

Seznam posebnih zaporedij

Posebno zaporedje

Opis

Primeri

A

Ujema se, če se niz začne z danim znakom

Afora

za geeke

za svet



Ujema se, če se beseda začne ali konča z danim znakom. (niz) bo preveril začetek besede in (niz) bo preveril konec besede.

ge

geeki

dobiti

B

Je nasprotje , tj. niz se ne sme začeti ali končati z danim regularnim izrazom.

Bge

skupaj

kovati

d

Ujema se s katero koli decimalno številko, to je enakovredno nastavljenemu razredu [0-9]

d

123

hej1

D

Ujema se s katerim koli neštevilčnim znakom, to je enakovredno nastavljenemu razredu [^0-9]

D

geeki

geek1

s

Ujema se s katerim koli presledkom.

s

gee ks

a bc a

S

Ujema se s katerim koli znakom, ki ni presledek

S

a bd

abcd

In

Ujema se s katerim koli alfanumeričnim znakom, to je enakovredno razredu [a-zA-Z0-9_].

In

123

geeKs4

IN

Ujema se s katerim koli znakom, ki ni alfanumerični.

IN

>$

dati



Ujema se, če se niz konča z danim regularnim izrazom

ab

abcdab

bababab

Funkcije RegEx

re modul vsebuje veliko funkcije ki nam pomagajo pri iskanju ujemanja v nizu.

Oglejmo si različne funkcije, ki jih ponuja ta modul za delo z regularnimi izrazi v Pythonu.

funkcija Opis
re.findall() najde in vrne vse ujemajoče se pojavitve na seznamu
re.compile() Regularni izrazi so sestavljeni v objekte vzorcev
re.split() Razdeli niz glede na pojavitve znaka ali vzorca.
re.sub() Zamenja vse pojavitve znaka ali besedne zveze z nadomestnim nizom.
re.escape() Izogiba se posebnemu znaku
re.search() Išče prvo pojavitev znaka ali vzorca

Oglejmo si delovanje teh funkcij RegEx z definicijo in primeri:

1. re.findall()

Vrni vsa neprekrivajoča se ujemanja vzorca v nizu kot seznam nizov. Niz se pregleda od leve proti desni in ujemanja se vrnejo v najdenem vrstnem redu.

Iskanje vseh pojavitev vzorca

Ta koda uporablja regularni izraz ( d+> ) najti vsa zaporedja ene ali več števk v danem nizu. Išče številske vrednosti in jih shrani na seznam. V tem primeru najde in natisne številke 123456789 in 987654321 iz vhodnega niza.

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

>

>

Izhod

['123456789', '987654321']>

2. re.compile()

Regularni izrazi so prevedeni v objekte vzorcev, ki imajo metode za različne operacije, kot je iskanje ujemanj vzorcev ali izvajanje zamenjav nizov.

Primer 1:

Koda uporablja vzorec regularnega izraza [a-e]> za iskanje in seznam vseh malih črk od 'a' do 'e' v vhodnem nizu Ja, je rekel g. Gibenson Stark. Izhod bo ['e', 'a', 'd', 'b', 'e']> , ki so ujemajoči se znaki.

Python

izberite več tabel sql




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

>

>

Izhod

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

Razumevanje izhoda:

  • Prva pojavitev je 'e' v Aye in ne 'A', saj razlikuje med velikimi in malimi črkami.
  • Naslednji pojav je 'a' v rekel, nato 'd' v rekel, sledita 'b' in 'e' v Gibensonu, zadnji 'a' se ujema s Starkom.
  • Metaznakovna poševnica nazaj '' ima zelo pomembno vlogo, saj signalizira različna zaporedja. Če želite uporabiti poševnico nazaj brez njenega posebnega pomena metaznaka, uporabite ''

Primer 2: Nastavite razred [s,.] se bo ujemal s katerim koli presledkom, ',' ali, '.'.

Koda uporablja regularne izraze za iskanje in seznam vseh posameznih števk in zaporedij števk v danih vhodnih nizih. Poišče enomestne številke z d> in zaporedja števk z d+> .

Python




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'>))>

>

>

Izhod

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

Primer 3:

Koda uporablja regularne izraze za iskanje in seznam besednih znakov, zaporedij besednih znakov in nebesednih znakov v vhodnih nizih. Ponuja sezname ujemajočih se znakov ali zaporedij.

Python




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.'>))>

>

>

Izhod

['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'] [' ', ' ', '*', '*', '*', ' ...>

Primer 4:

Koda uporablja vzorec regularnega izraza 'ab*' za iskanje in seznam vseh pojavitev 'ab', ki mu sledi nič ali več znakov 'b' v vhodnem nizu ababbaabbb. Vrne naslednji seznam ujemanj: ['ab', 'abb', 'abbb'].

Python




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

>

kislinske lastnosti v dbms

>

Izhod

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

Razumevanje izhoda:

  • Naš RE je ab*, ki ga 'a' spremlja poljubna št. od 'b', začenši z 0.
  • Izhod 'ab' je veljaven zaradi enega samega 'a', ki ga spremlja en sam 'b'.
  • Izhod 'abb' je veljaven zaradi enega samega 'a', ki ga spremljata 2 'b'.
  • Izhod 'a' je veljaven zaradi enega samega 'a', ki ga spremlja 0 'b'.
  • Izhod 'abbb' je veljaven zaradi enega samega 'a', ki ga spremljajo 3 'b'.

3. re.split()

Niz razdeli glede na pojavitve znaka ali vzorca, ko najde ta vzorec, se preostali znaki iz niza vrnejo kot del nastalega seznama.

Sintaksa:

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

Prvi parameter, vzorec, označuje regularni izraz, niz je podani niz, v katerem se bo iskal vzorec in v katerem pride do cepitve, maxsplit, če ni naveden, velja za nič '0', in če je podana katera koli drugačna od nič vrednosti, potem zgodi se kvečjemu toliko razcepov. Če je maxsplit = 1, se bo niz razdelil samo enkrat, rezultat pa bo seznam dolžine 2. Zastavice so zelo uporabne in lahko pomagajo skrajšati kodo, niso potrebni parametri, npr.: flags = re.IGNORECASE, v tej razdelitvi , bodo velike ali male črke prezrte.

Primer 1:

Razdeli niz z uporabo nebesednih znakov in presledkov kot ločil, vrne besede: ['Words', 'words', 'Words']> . Apostrofe obravnava kot nebesedne znake: ['Word', 's', 'words', 'Words']> . Razdeli z uporabo nebesednih znakov in števk: ['On', '12th', 'Jan', '2016', 'at', '11', '02', 'AM']> . Razdeli z uporabo števk kot ločila: ['On ', 'th Jan ', ', at ', ':', ' AM']> .

Python




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'>))>

>

>

Izhod

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

Primer 2:

Prvi stavek razdeli niz ob prvi pojavitvi ene ali več števk: ['On ', 'th Jan 2016, at 11:02 AM']> . drugi razdeli niz z uporabo malih črk od a do f kot ločila, neobčutljivo za velike in male črke: ['', 'y, ', 'oy oh ', 'oy, ', 'ome here'> ]>. Tretji razdeli niz z uporabo malih črk od a do f kot ločila, pri čemer razlikuje med velikimi in malimi črkami: ['', 'ey, Boy oh ', 'oy, ', 'ome here']> .

Python




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'>))>

>

>

Izhod

['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' v funkciji pomeni SubString, določen vzorec regularnega izraza se išče v danem nizu (3. parameter), in ko najde vzorec podniza, se nadomesti z repl (2. parameter), preverja štetje in ohranja število krat se to zgodi.

Sintaksa:

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

Primer 1:

  • Prvi stavek zamenja vse pojavitve 'ub' z '~*' (neobčutljivo na velike in male črke): 'S~*ject has ~*er booked already'> .
  • Drugi stavek zamenja vse pojavitve 'ub' z '~*' (razlikuje med velikimi in malimi črkami): 'S~*ject has Uber booked already'> .
  • Tretji stavek zamenja prvo pojavitev 'ub' z '~*' (neobčutljivo na velike in male črke): 'S~*ject has Uber booked already'> .
  • Četrti nadomešča 'IN' z '&' (neobčutljivo za velike in male črke): 'Baked Beans & Spam'> .

Python




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

>

>

Izhod

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() je podoben sub() v vseh pogledih, razen v načinu zagotavljanja izhoda. Vrne zbirko s številom skupnih zamenjav in novega niza in ne samo niza.

Sintaksa:

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

primer:

re.subn()> zamenja vse pojavitve vzorca v nizu in vrne torko s spremenjenim nizom in številom izvedenih zamenjav. Uporaben je tako za zamenjave, ki razlikujejo med velikimi in malimi črkami.

Python




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>])>

>

>

Izhod

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

6. re.escape()

Vrne niz z vsemi nealfanumeričnimi znaki, poševnicami nazaj. To je uporabno, če se želite ujemati s poljubnim dobesednim nizom, ki lahko vsebuje metaznake regularnega izraza.

Sintaksa:

re.escape(string)>

primer:

re.escape()> se uporablja za umik posebnih znakov v nizu, zaradi česar je varna za uporabo kot vzorec v regularnih izrazih. Zagotavlja, da se vsi znaki s posebnim pomenom v regularnih izrazih obravnavajo kot dobesedni znaki.

Python




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

>

>

Izhod

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

7. ponovno iskanje()

Ta metoda vrne None (če se vzorec ne ujema) ali pa re.MatchObject vsebuje informacije o ujemajočem se delu niza. Ta metoda se ustavi po prvem ujemanju, zato je bolj primerna za testiranje regularnega izraza kot za pridobivanje podatkov.

primer: Iskanje pojavitve vzorca

Ta koda uporablja regularni izraz za iskanje vzorca v danem nizu. Če najde ujemanje, izvleče in natisne ujemajoče se dele niza.

V tem specifičnem primeru išče vzorec, ki je sestavljen iz meseca (črke), ki mu sledi dan (številke) v vnosnem nizu Rodil sem se 24. junija. Če najde ujemanje, natisne celotno ujemanje, mesec , in dan.

Python3


ne



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.'>)>

>

>

Izhod

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

SETI

A Set je nabor znakov v oklepajih ‘[]’. Nabori se uporabljajo za ujemanje posameznega znaka v naboru znakov, podanih med oklepaji. Spodaj je seznam kompletov:

Set Opis
{n,} Kvantificira predhodni znak ali skupino in se ujema z najmanj n pojavitvami.
* Kvantificira predhodni znak ali skupino in se ujema z nič ali več pojavitvami.
[0123] Ujema se z določenimi števkami (0, 1, 2 ali 3)
[^arn] ujema se s katerim koli znakom RAZEN a, r in n
d Ujema se s katero koli števko (0-9).
[0-5][0-9] ujema s poljubnimi dvomestnimi številkami od 00 do 59
In Ujema se s katerim koli alfanumeričnim znakom (a-z, A-Z, 0-9 ali _).
[a-n] Ujema se z vsemi malimi črkami med a in n.
D Ujema se s katerim koli znakom, ki ni številka.
[arn] ujema, kjer je prisoten eden od navedenih znakov (a, r ali n).
[a-zA-Z] se ujema s katerim koli znakom med a in z, malimi ALI velikimi črkami
[0-9] se ujema s katero koli števko med 0 in 9

Ujemanje predmeta

Objekt Match vsebuje vse informacije o iskanju in rezultatu in če ni najdenega nobenega ujemanja, bo vrnjeno None. Oglejmo si nekaj pogosto uporabljenih metod in atributov predmeta ujemanja.

1. Pridobivanje niza in regularnega izraza

match.re atribut vrne posredovani regularni izraz in match.string atribut vrne posredovani niz.

primer: Pridobivanje niza in regularnega izraza ujemajočega se predmeta

Koda išče črko G na besedni meji v nizu Dobrodošli v GeeksForGeeks in natisne vzorec regularnega izraza ( res.re> ) in izvirni niz ( res.string> ) .

Python3




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

>

>

Izhod

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

2. Pridobivanje indeksa ujemajočega se predmeta

  • metoda start() vrne začetni indeks ujemajočega se podniza
  • metoda end() vrne končni indeks ujemajočega se podniza
  • metoda span() vrne torko, ki vsebuje začetni in končni indeks ujemajočega se podniza

primer: Pridobivanje indeksa ujemajočega se predmeta

Koda išče podniz Gee na meji besede v nizu Welcome to GeeksForGeeks in natisne začetni indeks ujemanja (res.start()>), končni indeks tekme (res.end()>) in razpon ujemanja (res.span()>).

Python3




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

>

>

Izhod

11 14 (11, 14)>

3. Pridobivanje ujemajočega se podniza

metoda group() vrne del niza, za katerega se vzorci ujemajo. Za boljše razumevanje si oglejte spodnji primer.

primer: Pridobivanje ujemajočega se podniza

Koda išče zaporedje dveh neštevilčnih znakov, ki jima sledita presledek in črka 't' v nizu Welcome to GeeksForGeeks, in natisne ujemajoče se besedilo z res.group()> .

Python3




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

>

>

Izhod

me t>

V zgornjem primeru naš vzorec določa za niz, ki vsebuje vsaj 2 znaka, ki jima sledi presledek, temu presledku pa sledi t.

Sorodni članek:

Referenca:
https://docs.python.org/2/library/re.html

Razpravljali smo o RegEx v Pythonu, šli smo skozi metaznake, funkcije in posebna zaporedja v RegEx Python.

Regularni izraz je zelo pomemben koncept v Pythonu, poskušali smo ga razložiti na enostaven način. Upam, da vam bo pomagalo na vašem Python Journey!!