logo

Regulært uttrykk (RegEx) i Python med eksempler

EN Regulært uttrykk eller RegEx er en spesiell sekvens av tegn som bruker et søkemønster for å finne en streng eller et sett med strenger.

Den kan oppdage tilstedeværelsen eller fraværet av en tekst ved å matche den med et bestemt mønster og kan også dele et mønster i ett eller flere undermønstre.



Regex-modul i Python

Python har en innebygd modul som heter re som brukes for regulære uttrykk i Python. Vi kan importere denne modulen ved å bruke importerklæringen.

Eksempel: Importerer re modul i Python

Python3








# importing re module> import> re>

>

>

Hvordan bruke RegEx i Python?

Du kan bruke RegEx i Python etter import av re modul.

Eksempel:

Denne Python-koden bruker regulære uttrykk for å søke etter ordet portal i den gitte strengen og skriver deretter ut start- og sluttindeksene til det samsvarende ordet i strengen.

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

>

>

Produksjon

Start Index: 34 End Index: 40>

Merk: Her står r karakter (r’portal’) for rå, ikke regex. Den rå strengen er litt forskjellig fra en vanlig streng, den vil ikke tolke -tegnet som et escape-tegn. Dette er fordi den regulære uttrykksmotoren bruker -tegn for sitt eget escape-formål.

Før du starter med Python regex-modulen, la oss se hvordan du faktisk skriver regex ved å bruke metategn eller spesielle sekvenser.

Metakarakterer

Metakarakterer er karakterene med spesiell betydning.

For å forstå RE-analogien er metategn nyttige og viktige. De vil bli brukt i funksjoner til modul re. Nedenfor er listen over metategn.

Metakarakterer

Beskrivelse

Brukes til å droppe den spesielle betydningen av tegn etter det

jfx java opplæring

[]

Representer en karakterklasse

^

Passer til begynnelsen

$

Matcher slutten

.

Matcher alle tegn unntatt nylinje

|

Betyr ELLER (Samsvarer med noen av tegnene atskilt av det.

?

Tilsvarer null eller én forekomst

*

Et hvilket som helst antall forekomster (inkludert 0 forekomster)

+

En eller flere hendelser

{}

Angi antall forekomster av et foregående regulært uttrykk som skal samsvare.

()

Omslutt en gruppe med Regex

La oss diskutere hver av disse metakarakterene i detalj:

1. – Omvendt skråstrek

Omvendt skråstrek () sørger for at karakteren ikke behandles på en spesiell måte. Dette kan betraktes som en måte å unnslippe metakarakterer.

For eksempel, hvis du ønsker å søke etter punktum(.) i strengen, vil du finne at punkt(.) vil bli behandlet som et spesialtegn som er et av metategnene (som vist i tabellen ovenfor). Så for dette tilfellet vil vi bruke omvendt skråstrek() rett før prikken(.) slik at den mister sin spesialitet. Se eksemplet nedenfor for en bedre forståelse.

Eksempel:

Det første søket ( re.search(r'.', s)> ) samsvarer med et hvilket som helst tegn, ikke bare punktum, mens det andre søket ( re.search(r'.', s)> ) ser spesielt etter og samsvarer med periodekarakteren.

Python3




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

>

>

Produksjon

>

2. [] – Firkantede parenteser

Firkantede parenteser ([]) representerer en tegnklasse som består av et sett med tegn som vi ønsker å matche. For eksempel vil tegnklassen [abc] samsvare med en enkelt a, b eller c.

Vi kan også spesifisere en rekke tegn ved å bruke – innenfor hakeparentesene. For eksempel,

  • [0, 3] er prøve som [0123]
  • [a-c] er det samme som [abc]

Vi kan også invertere tegnklassen ved å bruke tegnet(^)-symbolet. For eksempel,

  • [^0-3] betyr et hvilket som helst tall bortsett fra 0, 1, 2 eller 3
  • [^a-c] betyr et hvilket som helst tegn bortsett fra a, b eller c

Eksempel:

I denne koden bruker du regulære uttrykk for å finne alle tegnene i strengen som faller innenfor området 'a' til 'm'. De re.findall()> funksjonen returnerer en liste over alle slike tegn. I den gitte strengen er tegnene som samsvarer med dette mønsteret: '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)>

>

>

Produksjon

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

3. ^ – Caret

Karet (^)-symbolet samsvarer med begynnelsen av strengen, dvs. sjekker om strengen starter med gitte tegn eller ikke. For eksempel -

  • ^g vil sjekke om strengen starter med g, for eksempel geeks, globe, girl, g, etc.
  • ^ge vil sjekke om strengen starter med ge, for eksempel geeks, geeksforgeeks, etc.

Eksempel:

Denne koden bruker regulære uttrykk for å sjekke om en liste med strenger starter med De . Hvis en streng begynner med Den er merket som Matchet ellers er det merket som Ikke matchet.

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

>

>

Produksjon

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

4. $ – Dollar

Dollar($)-symbolet samsvarer med slutten av strengen, dvs. sjekker om strengen slutter med gitte tegn eller ikke. For eksempel-

  • s$ vil se etter strengen som slutter med a som geeks, ends, s, etc.
  • ks$ vil se etter strengen som slutter med ks som geeks, geeksforgeeks, ks, etc.

Eksempel:

Denne koden bruker et regulært uttrykk for å sjekke om strengen slutter med Verden!. Hvis en match blir funnet, skrives den ut Match funnet! ellers skrives den ut Finner ikke samsvar .

Python3




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

>

>

Produksjon

Match found!>

5. . - Punktum

Punkt(.)-symbolet samsvarer med bare et enkelt tegn bortsett fra nylinjetegnet ( ). For eksempel -

  • a.b vil se etter strengen som inneholder et hvilket som helst tegn på stedet for prikken, for eksempel acb, acbd, abbb, osv.
  • .. vil sjekke om strengen inneholder minst 2 tegn

Eksempel:

Denne koden bruker et regulært uttrykk for å søke etter mønsteret brun.rev innenfor strengen. Prikken (.>) i mønsteret representerer et hvilket som helst tegn. Hvis en match blir funnet, skrives den ut Match funnet! ellers skrives den ut Finner ikke samsvar .

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

>

>

Produksjon

Match found!>

6. | – Eller

Eller symbolet fungerer som operatøren eller, noe som betyr at det sjekker om mønsteret før eller etter symbolet eller er til stede i strengen eller ikke. For eksempel -

  • a|b vil matche enhver streng som inneholder a eller b, for eksempel acd, bcd, abcd, etc.

7. ? - Spørsmålstegn

Spørsmålstegnet (?) er en kvantifier i regulære uttrykk som indikerer at det foregående elementet skal matches null eller én gang. Den lar deg spesifisere at elementet er valgfritt, noe som betyr at det kan forekomme en gang eller ikke i det hele tatt. For eksempel,

  • ab?c vil bli matchet for strengen ac, acb, dabc, men vil ikke bli matchet for abbc fordi det er to b. På samme måte vil det ikke bli matchet for abdc fordi b ikke etterfølges av c.

8.* – Stjerne

Stjerne (*)-symbolet samsvarer med null eller flere forekomster av det regulære uttrykket foran *-symbolet. For eksempel -

  • ab*c vil bli matchet for strengen ac, abc, abbbc, dabc, osv., men vil ikke bli matchet for abdc fordi b ikke etterfølges av c.

9. + – Pluss

Pluss (+)-symbolet samsvarer med en eller flere forekomster av regex-symbolet foran +-symbolet. For eksempel -

  • ab+c vil bli matchet for strengen abc, abbc, dabc, men vil ikke bli matchet for ac, abdc, fordi det ikke er noen b i ac og b, blir ikke etterfulgt av c i abdc.

10. {m, n} – Seler

Klammeren samsvarer med alle repetisjoner som går foran regulært uttrykk fra m til og med n, begge to. For eksempel -

streng til boolsk java
  • a{2, 4} vil bli matchet for strengen aaab, baaaac, gaad, men vil ikke bli matchet for strenger som abc, bc fordi det bare er ett a eller ingen a i begge tilfellene.

11. () – Gruppe

Gruppesymbol brukes til å gruppere undermønstre. For eksempel -

  • (a|b)cd vil samsvare med strenger som acd, abcd, gacd, etc.

Spesielle sekvenser

Spesielle sekvenser samsvarer ikke for det faktiske tegnet i strengen, i stedet forteller det den spesifikke plasseringen i søkestrengen hvor samsvaret må finne sted. Det gjør det lettere å skrive vanlige mønstre.

Liste over spesielle sekvenser

Spesiell sekvens

Beskrivelse

Eksempler

EN

Matcher hvis strengen begynner med det gitte tegnet

Afor

for nerder

for verden



Matcher hvis ordet begynner eller slutter med det gitte tegnet. (streng) vil se etter begynnelsen av ordet og (streng) vil se etter slutten av ordet.

ge

nerder

B

Det er det motsatte av , dvs. strengen skal ikke starte eller slutte med det gitte regex.

Bge

sammen

smi

d

Matcher et hvilket som helst desimalsiffer, dette tilsvarer settklassen [0-9]

d

123

gee1

D

Matcher ethvert ikke-sifret tegn, dette tilsvarer settklassen [^0-9]

D

nerder

nerd1

s

Matcher ethvert mellomromstegn.

s

gee ks

a bc a

S

Matcher alle tegn som ikke er mellomrom

S

en bd

abcd

I

Matcher alle alfanumeriske tegn, dette tilsvarer klassen [a-zA-Z0-9_].

I

123

nerder4

I

Matcher alle ikke-alfanumeriske tegn.

I

>$

gi

MED

Matcher hvis strengen slutter med det gitte regulære uttrykket

ab

abcdab

bababab

RegEx-funksjoner

re modulen inneholder mange funksjoner som hjelper oss med å søke etter en streng etter et samsvar.

La oss se ulike funksjoner som tilbys av denne modulen for å fungere med regex i Python.

Funksjon Beskrivelse
re.findall() finner og returnerer alle samsvarende forekomster i en liste
re.compile() Regulære uttrykk er kompilert til mønsterobjekter
re.split() Del strengen etter forekomsten av et tegn eller et mønster.
re.sub() Erstatter alle forekomster av et tegn eller mønster med en erstatningsstreng.
re.escape() Unnslipper spesialkarakter
forskning() Søker etter første forekomst av tegn eller mønster

La oss se hvordan disse RegEx-funksjonene fungerer med definisjoner og eksempler:

1. re.findall()

Returner alle ikke-overlappende treff med mønster i streng, som en liste over strenger. Strengen skannes fra venstre til høyre, og treff returneres i den rekkefølgen som er funnet.

Finne alle forekomster av et mønster

Denne koden bruker et regulært uttrykk ( d+> ) for å finne alle sekvensene til ett eller flere sifre i den gitte strengen. Den søker etter numeriske verdier og lagrer dem i en liste. I dette eksemplet finner og skriver den ut tallene 123456789 og 987654321 fra inndatastrengen.

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

>

>

Produksjon

['123456789', '987654321']>

2. re.compile()

Regulære uttrykk er kompilert til mønsterobjekter, som har metoder for ulike operasjoner som å søke etter mønstertreff eller utføre strengerstatninger.

Eksempel 1:

Koden bruker et regulært uttrykksmønster [a-e]> for å finne og liste alle små bokstaver fra 'a' til 'e' i inndatastrengen Ja, sa Mr. Gibenson Stark. Utgangen blir ['e', 'a', 'd', 'b', 'e']> , som er de samsvarende tegnene.

Python




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

>

>

Produksjon

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

Forstå resultatet:

  • Første forekomst er 'e' i Aye og ikke 'A', da det er sensitiv for store og små bokstaver.
  • Neste forekomst er 'a' i sagt, deretter 'd' i sagt, etterfulgt av 'b' og 'e' i Gibenson, den siste 'a' samsvarer med Stark.
  • Metategn omvendt skråstrek '' har en veldig viktig rolle da det signaliserer ulike sekvenser. Hvis omvendt skråstrek skal brukes uten dens spesielle betydning som metategn, bruk ''

Eksempel 2: Sett klasse [s,.] vil matche ethvert mellomromstegn, ',' eller, '.' .

Koden bruker regulære uttrykk for å finne og liste alle enkeltsiffer og sekvenser av sifre i de gitte inndatastrengene. Den finner enkeltsiffer med d> og sekvenser av sifre med 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'>))>

gjennomsnitt vs gjennomsnitt
>

>

Produksjon

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

Eksempel 3:

Koden bruker regulære uttrykk for å finne og liste ordtegn, sekvenser av ordtegn og ikke-ordtegn i inndatastrenger. Den gir lister over samsvarende tegn eller sekvenser.

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

>

>

Produksjon

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

Eksempel 4:

Koden bruker et regulært uttrykksmønster 'ab*' for å finne og liste alle forekomster av 'ab' etterfulgt av null eller flere 'b'-tegn i inndatastrengen ababbaabbb. Den returnerer følgende liste over treff: ['ab', 'abb', 'abbb'].

Python




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

>

e-r modell diagram

>

Produksjon

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

Forstå resultatet:

  • Vår RE er ab*, som 'a' ledsaget av ethvert nei. av 'b'er, fra 0.
  • Utdata 'ab', er gyldig på grunn av singel 'a' akkompagnert av singel 'b'.
  • Utdata 'abb', er gyldig på grunn av singel 'a' ledsaget av 2 'b'.
  • Utdata 'a', er gyldig på grunn av singel 'a' ledsaget av 0 'b'.
  • Utdata 'abbb', er gyldig på grunn av singel 'a' ledsaget av 3 'b'.

3. re.split()

Del strengen etter forekomsten av et tegn eller et mønster, når du finner det mønsteret, returneres de resterende tegnene fra strengen som en del av den resulterende listen.

Syntaks:

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

Den første parameteren, mønsteret angir det regulære uttrykket, strengen er den gitte strengen som mønsteret skal søkes etter og hvor splittingen skjer, maxsplit hvis ikke oppgitt anses å være null '0', og hvis en verdi som ikke er null er angitt, på det meste oppstår det mange splittelser. Hvis maxsplit = 1, vil strengen bare dele seg én gang, noe som resulterer i en liste med lengde 2. Flaggene er svært nyttige og kan bidra til å forkorte kode, de er ikke nødvendige parametere, f.eks.: flagg = re.IGNORECASE, i denne splittelsen , tilfellet, dvs. små eller store bokstaver vil bli ignorert.

Eksempel 1:

Deler en streng ved å bruke ikke-ord-tegn og mellomrom som skilletegn, og returnerer ord: ['Words', 'words', 'Words']> . Betrakter apostrof som ikke-ord-tegn: ['Word', 's', 'words', 'Words']> . Deler med ikke-ord-tegn og sifre: ['On', '12th', 'Jan', '2016', 'at', '11', '02', 'AM']> . Deler med sifre som skilletegn: ['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'>))>

>

>

Produksjon

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

Eksempel 2:

First statement deler strengen ved første forekomst av ett eller flere sifre: ['On ', 'th Jan 2016, at 11:02 AM']> . sekund deler strengen ved å bruke små bokstaver a til f som skilletegn, uten store og små bokstaver: ['', 'y, ', 'oy oh ', 'oy, ', 'ome here'> ]>. Tredje deler strengen med små bokstaver a til f som skilletegn, skiller mellom store og små bokstaver: ['', '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'>))>

>

>

Produksjon

['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'en i funksjonen står for SubString, et bestemt regulært uttrykksmønster søkes i den gitte strengen(3rd parameter), og ved å finne delstrengmønsteret erstattes med repl(2nd parameter), count kontrollerer og vedlikeholder antall ganger dette skjer.

Syntaks:

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

Eksempel 1:

  • Første utsagn erstatter alle forekomster av 'ub' med '~*' (uavhengig av store og små bokstaver): 'S~*ject has ~*er booked already'> .
  • Den andre setningen erstatter alle forekomster av 'ub' med '~*' (skiller mellom store og små bokstaver): 'S~*ject has Uber booked already'> .
  • Tredje setning erstatter den første forekomsten av 'ub' med '~*' (uavhengig av store og små bokstaver): 'S~*ject has Uber booked already'> .
  • Fjerde erstatter 'AND' med ' & ' (uavhengig av store og små bokstaver): '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))>

>

>

Produksjon

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() ligner på sub() på alle måter, bortsett fra i måten å gi utdata på. Den returnerer en tuppel med en telling av totalen for erstatning og den nye strengen i stedet for bare strengen.

Syntaks:

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

Eksempel:

re.subn()> erstatter alle forekomster av et mønster i en streng og returnerer en tuppel med den modifiserte strengen og antall utførte erstatninger. Det er nyttig for både små og store bokstaver og ufølsomme erstatninger.

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

>

>

Produksjon

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

6. re.escape()

Returnerer streng med alle ikke-alfanumeriske skråstreker, dette er nyttig hvis du vil matche en vilkårlig bokstavelig streng som kan ha vanlige uttrykksmetategn.

Syntaks:

re.escape(string)>

Eksempel:

re.escape()> brukes til å unnslippe spesialtegn i en streng, noe som gjør det trygt å brukes som et mønster i regulære uttrykk. Det sikrer at alle tegn med spesiell betydning i regulære uttrykk behandles som bokstavelige tegn.

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

>

>

Produksjon

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

7. re.search()

Denne metoden returnerer enten Ingen (hvis mønsteret ikke samsvarer), eller et re.MatchObject inneholder informasjon om den matchende delen av strengen. Denne metoden stopper etter første match, så denne egner seg best for å teste et regulært uttrykk mer enn å trekke ut data.

Eksempel: Søker etter en forekomst av mønsteret

Denne koden bruker et regulært uttrykk for å søke etter et mønster i den gitte strengen. Hvis et samsvar blir funnet, trekker det ut og skriver ut de samsvarende delene av strengen.

I dette spesifikke eksemplet søker den etter et mønster som består av en måned (bokstaver) etterfulgt av en dag (siffer) i inndatastrengen jeg ble født 24. juni. Hvis en treff blir funnet, skriver den ut hele treffet, måneden , og dagen.

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

>

>

Produksjon

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

SETTENE

EN Sett er et sett med tegn omsluttet av «[]»-parenteser. Sett brukes til å matche et enkelt tegn i settet med tegn som er spesifisert mellom parentes. Nedenfor er listen over sett:

Sett Beskrivelse
{n,} Kvantifiserer det foregående tegnet eller gruppen og samsvarer med minst n forekomster.
* Kvantifiserer det foregående tegnet eller gruppen og samsvarer med null eller flere forekomster.
[0123] Matcher de angitte sifrene (0, 1, 2 eller 3)
[^arn] samsvarer med et hvilket som helst tegn UNNTAT a, r og n
d Matcher et hvilket som helst siffer (0-9).
[0-5][0-9] samsvarer for alle tosifrede tall fra 00 og 59
I Matcher alle alfanumeriske tegn (a-z, A-Z, 0-9 eller _).
[a-n] Tilsvarer alle små bokstaver mellom a og n.
D Matcher ethvert ikke-sifret tegn.
[arn] samsvarer med et av de angitte tegnene (a, r eller n).
[a-zA-Z] samsvarer med ethvert tegn mellom a og z, små bokstaver ELLER store bokstaver
[0-9] samsvarer med et hvilket som helst siffer mellom 0 og 9

Match objekt

Et Match-objekt inneholder all informasjon om søket og resultatet, og hvis det ikke finnes noe samsvar, vil Ingen bli returnert. La oss se noen av de vanligste metodene og egenskapene til matchobjektet.

1. Henter strengen og regex

match.re attributt returnerer det regulære uttrykket bestått og match.string attributt returnerer strengen som er bestått.

Eksempel: Henter strengen og regex for det matchede objektet

Koden søker etter bokstaven G ved en ordgrense i strengen Velkommen til GeeksForGeeks og skriver ut det regulære uttrykksmønsteret ( res.re> ) og den originale strengen ( res.string> ) .

Python3




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

int i streng
>

>

Produksjon

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

2. Hente indeks over matchet objekt

  • start()-metoden returnerer startindeksen til den matchede delstrengen
  • end()-metoden returnerer sluttindeksen til den matchede delstrengen
  • span()-metoden returnerer en tuppel som inneholder start- og sluttindeksen til den matchede delstrengen

Eksempel: Henter indeks over samsvarende objekt

Koden søker etter delstrengen Gee ved en ordgrense i strengen Velkommen til GeeksForGeeks og skriver ut startindeksen for kampen (res.start()>), sluttindeksen for kampen (res.end()>), og tidsrommet for kampen (res.span()>).

Python3




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

>

>

Produksjon

11 14 (11, 14)>

3. Få matchet understreng

group()-metoden returnerer den delen av strengen som mønstrene samsvarer med. Se eksemplet nedenfor for en bedre forståelse.

Eksempel: Får samsvarende understreng

Koden søker etter en sekvens av to ikke-sifrede tegn etterfulgt av et mellomrom og bokstaven 't' i strengen Welcome to GeeksForGeeks og skriver ut den samsvarende teksten ved å bruke res.group()> .

Python3




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

>

>

Produksjon

me t>

I eksemplet ovenfor spesifiserer mønsteret vårt for strengen som inneholder minst 2 tegn som er etterfulgt av et mellomrom, og at mellomrom er etterfulgt av en t.

Relatert artikkel:

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

Vi har diskutert RegEx i Python, vi har gått gjennom metategnene, funksjonene og spesialsekvensene i RegEx Python.

Regular Expression er et veldig viktig konsept i Python, vi har prøvd å forklare det på en enkel måte. Håper det hjelper i Python-reisen din!!