Hvis du er 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 fremdeles er ikke de fleste utvikleres styrke og allsidighet i disse mønstrene.
Denne guiden handler om vanlige uttrykk og hvordan du kan bruke dem i Python-programmeringsspråket.
Hva er vanlige uttrykk?
Regulære uttrykk er mønstre som hjelper en bruker til å matche tegnkombinasjoner i tekstfiler og strenger. Du kan bruke vanlige uttrykk for å filtrere eller finne et bestemt mønster i utdataene til en kommando eller et dokument.
Det er forskjellige bruksområder 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 mangelen på bevissthet om kraften i mønstermatching. Noen finner til og med vanlige uttrykk forvirrende på grunn av den store mengden tegn og sekvenser som brukes i mønstrene.
Uansett årsak kan være, er og vil vanlige uttrykk være en av de viktigste aspektene ved programmering som alle burde vite om.
Regulære 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 samsvarer med seg selv. Men komplekse tegn som $, *, +, {osv. hjelp i samsvar med høyere ordre.
- Asterisk (*): Matcher forrige tegn null eller flere ganger. Den bokstavelige betydningen av karakteren ville være "Element multiplisert n ganger". For eksempel hvis det regulære uttrykket er abc *, strengene som matches vil være ab, abc, abcc, abccc, abcccc, etc. Uttrykket [bc] * vil matche bc, bcbc, bcbc, etc.
- Pluss (+): Matcher forrige tegn en eller flere ganger. Arbeidet med + karakter ligner på *, men + tegn utelater mønsteret hvis tegnet ikke forekommer. For eksempel, abc + vil matche abc, abcc, abccc, etc. men ikke ab.
- Spørsmålstegn (?): Matcher forrige tegn null eller én gang. For eksempel mønsteret abc? vil bare matche ab og abc.
- Rør (|): Brukes som binær ELLER operatør. Matcher en av tegnene som går foran og etterfølger røret. For eksempel, a | b vil matche enten a eller b.
- Punktum (.): Matcher et tegn hvis identitet er ukjent. For eksempel, a.c. vil matche aac, abc, acc, a2c, og så videre.
- Gulrot (^): Matcher det første tegnet i mønsteret. For eksempel, ^ Ra vil matche ord som begynner med Ra slik som kanin, vaskebjørn og tilfeldig.
- Dollar ($): Matcher det siste tegnet i mønsteret. For eksempel, en $ vil matche ord som slutter med en som Van, Dan og Plan.
- Bindestrek (-): Brukes til å definere en rekke tegn. For eksempel, [0-9] vil matche alle ensifrede numeriske tegn.
Spesielle sekvenser som brukes i mønstre med vanlig uttrykk er:
- \EN: Returnerer et treff hvis de etterfølgende tegnene er tilstede i begynnelsen av strengen. For eksempel, \ AThe vil matche ord som begynner med De slik som The, Them, They, etc.
- \ b: Returnerer et treff hvis tegnet blir funnet i begynnelsen eller slutten av et ord. For eksempel, \ bmad og gal \ b vil matche ord som laget og nomad henholdsvis.
- \ B: Returnerer et treff hvis tegnet ikke blir funnet i begynnelsen eller slutten av et ord.
- \ d: Matcher numeriske tegn i strengen. For eksempel, /d* vil matche tall som 1, 12, 1232, etc.
- \ D: Matcher ikke-numeriske tegn i strengen. / D vil matche a, b, c, f, etc.
- \ s: Matcher et mellomromstegn i teksten.
- \ S: Matcher et tegn som ikke er mellomrom i teksten.
- \ w: Returnerer et treff hvis strengen inneholder alfanumeriske tegn inkludert understrekninger. For eksempel, \ w vil matche a, b, c, d, 1, 2, 3, etc.
- \ W: Returnerer et treff hvis strengen ikke inneholder alfanumeriske tegn eller understreker.
- \ Z: Matcher tegn på slutten av en streng. For eksempel, slutt \ Z vil matche ord som slutter med slutt slik som bøy, reparere, pleie osv.
Python Methods for Regular Expressions
I Python, den re biblioteket inneholder 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, da det kommer forhåndsinstallert med Python-tolk.
For å importere re bibliotek i Python, legg til følgende kode i skriptet:
importer re
Vær oppmerksom på at mens vi sender regulære uttrykk i Python, bruker vi rå strenger, da de ikke tolker spesialtegn som \ n og \ t annerledes.
Kamp()
De re.match () metode i Python returnerer et regex-objekt hvis programmet finner en kamp i begynnelsen av den angitte strengen. Denne funksjonen tar to grunnleggende argumenter:
re.match (mønster, streng)
...hvor mønster er det vanlige uttrykket og streng er teksten som må søkes.
Ta en titt på kodebiten nedenfor.
importer re
match = re.match (r'Word ', "Denne setningen inneholder et ord")
skrive ut (matche)
De r tegn før strengen står for rå streng.
Produksjon:
Ingen
Den nevnte koden kommer tilbake Ingen fordi Ord var ikke til stede i begynnelsen av strengen.
Hvis det blir funnet en kamp, kan du skrive ut fyrstikken ved hjelp av gruppe() metode som tilhører regex-objektet.
importer re
match = re.match (r'Word ', "Word er vanskelig å lese")
skriv ut (match.group (0))
Produksjon:
Ord
Søk()
De undersøkelser() metoden tar lignende argumenter som re.match (). Mens match () bare returnerer treff som er til stede i begynnelsen av strengen, Søk() vil returnere treff som er funnet i en hvilken som helst indeks i strengen.
importer re
match = re.search (r'Word ', "Denne setningen inneholder et ord. Ord er vanskelig å lese. ")
skriv ut (match.group (0))
Merk at kamp() og Søk() metoder vil bare returnere en mønsterkamp. I ovennevnte kode, Ord vises to ganger. Men Søk() funksjonen vil bare matche den første forekomsten av ordet.
Ord
Finn alle ()
Som du allerede kan gjette, er findall () metoden returnerer alle mulige treff i strengen.
importer re
match = re.search (r'Word ', "Denne setningen inneholder et ord. Ord er vanskelig å lese. ")
for elem i kamp:
skrive ut (elem)
I stedet for å returnere et regex-objekt, returnerer findall () -funksjonen en liste over alle treffene. Du kan gjenta gjennom listen ved hjelp av a for loop i python.
Dele()
Hvis du vil dele en streng i understrenger ved å bruke et mønster som avgrensning, så dele() funksjonen er den du trenger.
importer re
split = re.split (r'and ', "Dette ordet og det og dette er forskjellige.")
skriv ut (delt)
Produksjon:
['Dette ordet "," det "," dette er annerledes. "]
Under()
De under() metoden lar en bruker erstatte et bestemt ord i stedet for et mønster. Det tar følgende argumenter.
re.sub (mønster, erstatning, streng)
Vurder denne kodebiten:
importer re
resultat = re.sub (r'and ',' eller ', "Dave og Harry må straffes.")
skriv ut (resultat)
Produksjon:
Dave eller Harry må straffes.
Kompilere()
De re.compile () metoden i re biblioteket lar en bruker lagre en samlet versjon av det vanlige uttrykksmønsteret i minnet. Deretter, ved hjelp av det kompilerte objektet, kan brukeren raskt filtrere den angitte tekstdumpen for samsvarende mønstre.
importer re
mønster = re.compile ('Python')
match = pattern.findall ("Python er et flott språk for å skrive manus. Python er lett å lære. ")
skrive ut (matche)
Denne funksjonen brukes primært til å lagre mønstre som er ressurskrevende og trenger 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 din disposisjon. Du kan raskt skrive noen kode for å filtrere eller erstatte bestemte mønstre i dokumentet.
Det kan være vanskelig å huske alle karakterene og matche sekvenser hvis du bare begynner med regex. For å bli bedre med vanlige uttrykk, vil det definitivt hjelpe deg på lang sikt å referere til en liste med tegn, metoder og sekvenser i ny og ne.
Bruk denne listen over Python-regulære uttrykk slik at du kan bli flinkere til å bruke dette allsidige programmeringsspråket.
Les Neste
- Programmering
- Programmering
- Python
Deepesh er Junior Editor for Linux på MUO. Han har skrevet informasjonsinnhold på internett i over 3 år. På fritiden liker han å skrive, høre på musikk og spille gitaren.
Abonner på vårt nyhetsbrev
Bli med på nyhetsbrevet vårt for tekniske tips, anmeldelser, gratis e-bøker og eksklusive tilbud!
Ett steg til…!
Bekreft e-postadressen din i e-posten vi nettopp sendte deg.