Begynnerguiden til vanlige uttrykk med Python

Begynnerguiden til vanlige uttrykk med Python

Hvis du er en programmerer, er sjansen stor for at du allerede vet hva regulære uttrykk (regex) er. Regex -mønstre er implementert i nesten alle vanlige programmeringsspråk, men kraften og allsidigheten til disse mønstrene er ukjent av de fleste utviklere.





Denne guiden handler om vanlige uttrykk og hvordan du kan bruke dem i programmeringsspråket Python.





Hva er vanlige uttrykk?

Vanlige uttrykk er mønstre som hjelper en bruker å matche tegnkombinasjoner i tekstfiler og strenger. Du kan bruke vanlige uttrykk for å filtrere eller finne et bestemt mønster i utdataene fra en kommando eller et dokument.





Det er forskjellige brukstilfeller av vanlige uttrykk, det mest kjente vesenet grep -kommandoen i Linux . Andre applikasjoner inkluderer informasjonsfiltrering, for eksempel å trekke ut e -postadresser og telefonnumre fra en datadump.

Hovedårsaken til at mange utviklere avviker fra vanlige uttrykk, er mangel på bevissthet om kraften i mønstermatching. Noen synes til og med vanlige uttrykk forvirrende på grunn av den store mengden tegn og sekvenser som brukes i mønstrene.



Uansett årsak, er og vil vanlige uttrykk være en av de viktigste aspektene ved programmering som alle bør vite om.

lag din egen koble prikkene

Vanlige uttrykk: Matchende tegn og sekvenser

Regex er et helt nytt språk i seg selv. En regex -motor tolker mønstre som består av flere tegn utstyrt med spesifikke betydninger. Grunnleggende bokstaver som alfanumeriske tegn matcher seg selv. Men komplekse tegn som $, *, +, {, etc. hjelper til med høyere orden.





  1. Stjerne (*): Matcher det foregående tegnet null eller flere ganger. Den bokstavelige betydningen av karakteren ville være 'Element multiplisert n ganger'. For eksempel hvis det vanlige uttrykket er abc * , de samsvarende strengene vil være ab, abc, abcc, abccc, abcccc, etc. Uttrykket [bc]* vil matche bc, bcbc, bcbc, etc.
  2. Mer (+): Matcher det foregående tegnet en eller flere ganger. Arbeidet til + karakter ligner på * , men + tegnet utelater mønsteret hvis tegnet ikke forekommer. For eksempel, abc + vil matche abc, abcc, abccc, etc. men ikke ab.
  3. Spørsmålstegn (?): Samsvarer med forrige tegn null eller én gang (er). For eksempel mønsteret abc? vil bare matche ab og abc.
  4. Rør (|): Brukes som binær ELLER operatør. Matcher en av karakterene som gikk foran og etterfølgende pipen. For eksempel, a | b vil matche enten a eller b.
  5. Punktum (.): Matcher en karakter hvis identitet er ukjent. For eksempel, a.c vil matche aac, abc, acc, a2c, og så videre.
  6. Gulrot (^): Matcher det første tegnet i mønsteret. For eksempel, ^Ra vil matche ord som begynner med Ute som kanin, vaskebjørn og tilfeldig.
  7. Dollar ($): Matcher det siste tegnet i mønsteret. For eksempel, en $ vil matche ord som slutter på en som Van, Dan og Plan.
  8. Bindestrek (-): Brukes til å definere en rekke tegn. For eksempel, [0-9] vil matche alle ensifrede numeriske tegn.

Spesielle sekvenser som brukes i vanlige uttrykksmønstre er:

  1. TIL: Returnerer en treff hvis de påfølgende tegnene er tilstede i begynnelsen av strengen. For eksempel, AThe vil matche ord som begynner med De som The, Them, They, etc.
  2. b: Returnerer en treff hvis tegnet finnes enten i begynnelsen eller på slutten av et ord. For eksempel, bmad og gal b vil matche ord som laget og nomad henholdsvis.
  3. B: Returnerer en treff hvis tegnet ikke blir funnet i begynnelsen eller slutten av et ord.
  4. d: Matcher numeriske tegn som finnes i strengen. For eksempel, /d* vil matche tall som 1, 12, 1232, etc.
  5. D: Matcher ikke-numeriske tegn i strengen. /D vil matche a, b, c, f, etc.
  6. s: Matcher et mellomromstegn i teksten.
  7. S: Matcher et tegn som ikke er mellomrom i teksten.
  8. i: Returnerer en treff hvis strengen inneholder alfanumeriske tegn, inkludert understrek. For eksempel, i vil matche a, b, c, d, 1, 2, 3, etc.
  9. I: Returnerer en treff hvis strengen ikke inneholder alfanumeriske tegn eller understreker.
  10. MED: Matcher tegn på slutten av en streng. For eksempel, slutten Z vil matche ord som slutter på slutt for eksempel bøye, reparere, pleie, etc.

Python -metoder for vanlige uttrykk

I Python, re bibliotek gir alle nødvendige funksjoner og verktøy som kreves for å implementere regex i programmene dine. Du trenger ikke å laste ned biblioteket ved hjelp av pip, ettersom det kommer forhåndsinstallert med Python -tolken.





For å importere re bibliotek i Python, legg til følgende kode i skriptet ditt:

import re

Vær oppmerksom på at mens vi sender vanlige uttrykk i Python, bruker vi råstrenger da de ikke tolker spesialtegn som f.eks n og t annerledes.

Kamp()

De re.match () metode i Python returnerer et regex -objekt hvis programmet finner et treff i begynnelsen av den angitte strengen. Denne funksjonen tar to grunnleggende argumenter:

re.match(pattern, string)

...hvor mønster er det vanlige uttrykket og streng er teksten som må søkes.

Ta en titt på kodebiten nedenfor.

import re
match = re.match(r'Word', 'This sentence contains a Word')
print(match)

De r tegn før strengen står for rå streng.

Produksjon:

None

Ovennevnte kode returnerer Ingen fordi Ord var ikke til stede i begynnelsen av strengen.

Hvis det blir funnet en treff, kan du skrive ut fyrstikken med gruppe() metode som tilhører regex -objektet.

import re
match = re.match(r'Word', 'Word is hard to read')
print(match.group(0))

Produksjon:

Word

De forskning () metode tar lignende argumenter som re.match (). Mens match () bare returnerer treff som er tilstede i begynnelsen av strengen, Søk() vil returnere treff funnet på en hvilken som helst indeks i strengen.

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
print(match.group(0))

Vær oppmerksom på at kamp() og Søk() metoder vil bare returnere ett mønstermatch. I ovennevnte kode, Ord vises to ganger. Men Søk() funksjonen vil bare matche den første forekomsten av ordet.

Word

FindAll ()

Som du allerede kan gjette, er findall () method returnerer alle mulige treff i strengen.

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
for elem in match:
print(elem)

I stedet for å returnere et regex -objekt, returnerer funksjonen findall () en liste over alle treffene. Du kan gjennomgå listen gjennom en for loop i python .

Dele()

Hvis du vil dele en streng i delstrenger ved å bruke et mønster som skilletegn, så vil dele() funksjonen er den du trenger.

import re
split = re.split(r'and', 'This word and that and this are different.')
print(split)

Produksjon:

['This word', 'that', 'this are different.']

Under()

De under() metode lar en bruker erstatte et bestemt ord i stedet for et mønster. Det tar følgende argumenter.

re.sub(pattern, replacement, string)

Vurder denne kodebiten:

import re
result = re.sub(r'and', 'or', 'Dave and Harry must be punished.')
print(result)

Produksjon:

Dave or Harry must be punished.

Kompilere()

De re.compile () metoden i re bibliotek lar en bruker lagre en kompilert versjon av det vanlige uttrykksmønsteret i minnet. Ved å bruke det kompilerte objektet kan brukeren deretter raskt filtrere den angitte tekstdumpen for matchede mønstre.

import re
pattern = re.compile('Python')
match = pattern.findall('Python is a great language for writing scripts. Python is easy to learn.')
print(match)

Denne funksjonen brukes først og fremst for å lagre mønstre som er ressurskrevende og krever mye tid å kjøre. Å kompilere og lagre mønsteret som et objekt på forhånd løser dette problemet.

Utnytt kraften til Regex med Python

Når du jobber med tekstfiler og utdata, er regex et flott verktøy å ha til rådighet. Du kan raskt skrive en kode for å filtrere eller erstatte spesifikke mønstre i dokumentet.

Å huske alle karakterene og matchende sekvenser kan være vanskelig hvis du bare har begynt med regex. For å bli bedre på vanlige uttrykk, vil en henvisning til en liste over tegn, metoder og sekvenser nå og da definitivt hjelpe deg på sikt.

Dele Dele kvitring E -post Python RegEx jukseark for spirende programmerere

Bruk denne listen over vanlige Python -uttrykk, slik at du kan bli flinkere til å bruke dette allsidige programmeringsspråket.

Les neste
Relaterte temaer
  • Programmering
  • Programmering
  • Python
Om forfatteren Deepesh Sharma(79 artikler publisert)

Deepesh er Junior Editor for Linux ved MUO. Han skriver informasjonsguider på Linux, med sikte på å gi alle nykommere en lykksalig opplevelse. Usikker på filmer, men hvis du vil snakke om teknologi, er han din fyr. På fritiden kan du finne ham lese bøker, lytte til forskjellige musikksjangre eller spille gitar.

Mer fra Deepesh Sharma

Abonner på vårt nyhetsbrev

Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis ebøker og eksklusive tilbud!

Klikk her for å abonnere