Hvad er et regelmæssigt udtryk?
Før vi går hen imod praktiske eksempler, skal vi vide, hvad et regulært udtryk virkelig er. Et regulært udtryk er en sekvens af tegn, der definerer strukturen for et input eller et søgemønster. Forestil dig at indsætte en e-mail eller adgangskode på et tilfældigt websted som Facebook, Twitter eller Microsoft. Prøv at sætte det forkert, og med forkert mener jeg at gå imod deres konvention. Det vil tydeligt påpege disse fejl for dig. Du får ikke lov til at gå til næste trin, før dit input matcher det mønster, som de har angivet i backend. Det specifikke mønster, der begrænser dig fra at lægge nogen form for yderligere eller irrelevant information, er kendt som regex eller regulært udtryk.
Regulære udtryk i Python
Regulære udtryk spiller ikke en anden rolle i python som i andre programmeringssprog. Python indeholder modulet re som giver fuld support til brugen af regulære udtryk. Hver gang der indtastes en uegnet eller umatchelig information, eller der opstår nogen form for fejl, dette re modul vil fange det som en undtagelse, som i sidste ende hjælper med at løse de krævede problemer.
Regular Expressions mønstre
Der er mange tilgængelige tegn skrevet i en sekvens, der danner et specifikt regulært udtryksmønster. Bortset fra kontroltegn, (+ ? . * ^ $ () [] | \), alle tegn matcher sig selv. Kontroltegn kan dog undgås ved at omskrive en tilbageslag.
Følgende er en tabel, der består af et mønster og en beskrivelse af deres arbejde i python.
Mønster | Beskrivelse | |
[Pp] ython | Match "Python" eller "python" | |
Badekar [Ee] | Match "TubE" eller "Tube" | |
[aeiou] | Match alle små bogstaver | |
[0-9] | Match ethvert ciffer mellem 0 og 9 | |
[a-z] | Match ethvert lille ASCII-bogstav | |
[A-Z] | Match ethvert stort ASCII-bogstav | |
[a-zA-Z0-9] | Match ethvert lille, stort ASCII-bogstav eller et ciffer mellem 0 og 9 | |
[^ aeiou] | Match alt, men ikke små vokaler | |
[^ 0-9] | Match noget, men ikke ciffer | |
. | Match ethvert tegn undtagen ny linje | |
\ d | Match ethvert ciffer: [0-9] | |
\ D | Match et ikke-cifret: [^ 0-9] | |
\ s | Match hvide mellemrum | |
\ S | Match ikke-hvide mellemrum | |
\EN | Match begyndelsen af strengen | |
\ Z | Match slutningen af strengen | |
\ w | Match ordtegn | |
\ W | Match tegn, der ikke er ord | |
[…] | Match ethvert enkelt tegn i parentes | |
[^…] | Match ethvert enkelt tegn, der ikke er i parentes | |
$ | Match slutningen af linjen | |
^ | Match begyndelsen på linjen |
Match- og søgefunktioner i Python
Her skal vi se to eksempler med de to indbyggede funktioner, der findes i python. Den ene er match, og den anden er søgefunktion. Begge tager de samme parametre, som er som følger:
- Mønster - Et regulært udtryk, der skal matches eller søges i.
- Snor - En streng, der vil blive matchet eller søgt i en sætning eller i et input.
Inden vi springer ind i eksempel, er her en anden ting, du har brug for at vide. To metoder kan bruges til at få matchende grupper, der er som følger:
- grupper ()
- gruppe (num = 0,1,2…)
Hvad der sker er, at når der bruges match- eller søgefunktioner, oprettes undergrupper af alle relaterede mønstre, der findes i strenge, og strukturer dem ved positioner, der starter fra 0. Se eksemplet nedenfor for at få en bedre idé.
Matchfunktion (eksempel)
I det følgende eksempel har vi taget en liste, hvor vi har brugt et regulært udtryk, der kontrollerer ordene, der starter med bogstavet 'a' og kun vælger, hvis begge ord starter med samme bogstav i.e.: 'a'.
import genarraylist = ["affection affect", "affection act", "affection Programming"]
for element i arraylist:
k = re.match (“(a \ w +) \ W (g \ w +)”, element)
hvis k:
udskrive ((z.grupper ()))
Produktion:
('hengivenhed', 'affekt')('hengivenhed', 'handling')
Tredje element på listen vil ikke blive betragtet, da det ikke matcher regex, der siger, at begge ord skal starte med 'a'.
Søgefunktion (eksempel)
Denne funktion er forskellig fra match. Søgning scanner gennem hele sætningen, mens match ikke gør det. I det følgende eksempel er søgemetoden vellykket, men matchfunktionen er ikke.
import genInput = “DocumentationNew”
v = re.søg (“(ta.*) ”, Input)
hvis v:
udskrive (“resultat:” v.gruppe (1))
Produktion:
resultat: tationNy'ta.* 'betyder noget efter' ta ', som giver os vores resultat som' tationNew 'fra den søgte Input "DocumentationNew".
Konklusion
Regular Expressions er afgørende for alle softwareudviklere, og nu kan du nemt se, hvordan du bruger Regular Expressions på Python-programmeringssproget.