Begynderguiden til regulære udtryk med Python

Begynderguiden til regulære udtryk med Python

Hvis du er en programmør, er chancerne for, at du allerede ved, hvad regulære udtryk (regex) er. Regex -mønstre er blevet implementeret i næsten alle almindelige programmeringssprog, men stadig er kraften og alsidigheden i disse mønstre ikke genkendt af de fleste udviklere.





Denne guide handler om regulære udtryk, og hvordan du kan bruge dem i programmeringssproget Python.





Hvad er regulære udtryk?

Regelmæssige udtryk er mønstre, der hjælper en bruger med at matche tegnkombinationer i tekstfiler og strenge. Du kan bruge regulære udtryk til at filtrere eller finde et bestemt mønster i output fra en kommando eller et dokument.





Der er forskellige tilfælde af regulære udtryk, det mest berømte væsen kommandoen grep i Linux . Andre applikationer omfatter informationsfiltrering, f.eks. Udtrækning af e -mail -adresser og telefonnumre fra en datadump.

Hovedårsagen til, at mange udviklere afviger fra almindelige udtryk, er den manglende bevidsthed om kraften i mønstermatchning. Nogle finder endda regulære udtryk forvirrende på grund af den store mængde tegn og sekvenser, der bruges i mønstrene.



Uanset hvad årsagen måtte være, er og vil regulære udtryk være et af de vigtigste aspekter af programmering, som alle bør vide om.

hvordan man måler areal på google maps

Regelmæssige udtryk: Matchende tegn og sekvenser

Regex er et helt nyt sprog i sig selv. En regex -motor fortolker mønstre bestående af flere tegn udstyret med specifikke betydninger. Grundlæggende bogstaver som alfanumeriske tegn matcher sig selv. Men komplekse tegn som $, *, +, {, etc. hjælper med at matche højere ordre.





  1. Stjerne (*): Matcher det foregående tegn nul eller flere gange. Den bogstavelige betydning af karakteren ville være 'Element ganget n gange'. For eksempel, hvis det regulære udtryk er abc * , de matchede strenge vil være ab, abc, abcc, abccc, abcccc osv. Udtrykket [bc]* vil matche bc, bcbc, bcbc osv.
  2. Flere (+): Matcher det foregående tegn en eller flere gange. Arbejdet med + karakter ligner * , men + tegn udelader mønsteret, hvis tegnet ikke forekommer. For eksempel, abc + vil matche abc, abcc, abccc osv. men ikke ab.
  3. Spørgsmålstegn (?): Matcher det foregående tegn nul eller én gang. For eksempel mønsteret abc? vil kun matche ab og abc.
  4. Rør (|): Brugt som binær ELLER operatør. Matcher et af tegnene, der går forud for og efterfølgende pipen. For eksempel, a | b matcher enten a eller b.
  5. Punkt (.): Matcher en karakter, hvis identitet er ukendt. For eksempel, a.c vil matche aac, abc, acc, a2c og så videre.
  6. Gulerod (^): Matcher det første tegn i mønsteret. For eksempel, ^Ra vil matche ord, der starter med Ud såsom kanin, vaskebjørn og tilfældig.
  7. Dollar ($): Matcher det sidste tegn i mønsteret. For eksempel, en $ vil matche ord, der slutter med en såsom Van, Dan og Plan.
  8. Bindestreg (-): Bruges til at definere en række tegn. For eksempel, [0-9] matcher alle encifrede numeriske tegn.

Særlige sekvenser, der bruges i regulære udtryksmønstre, er:

  1. TIL: Returnerer et match, hvis de efterfølgende tegn er til stede i begyndelsen af ​​strengen. For eksempel, AThe vil matche ord, der starter med Det såsom The, Dem, They osv.
  2. b: Returnerer et match, hvis tegnet findes i begyndelsen eller i slutningen af ​​et ord. For eksempel, mad og gal b vil matche ord som f.eks lavet og nomade henholdsvis.
  3. B: Returnerer et match, hvis tegnet ikke findes i begyndelsen eller slutningen af ​​et ord.
  4. d: Matcher numeriske tegn, der findes i strengen. For eksempel, /d* vil matche numre som 1, 12, 1232 osv.
  5. D: Matcher ikke-numeriske tegn i strengen. /D vil matche a, b, c, f osv.
  6. s: Matcher et mellemrumstegn i teksten.
  7. S: Matcher et ikke-mellemrumstegn i teksten.
  8. i: Returnerer et match, hvis strengen indeholder alfanumeriske tegn inklusive understregninger. For eksempel, i vil matche a, b, c, d, 1, 2, 3 osv.
  9. I: Returnerer et match, hvis strengen ikke indeholder alfanumeriske tegn eller understreger.
  10. MED: Matcher tegn i slutningen af ​​en streng. For eksempel, slut Z vil matche ord, der slutter med ende såsom bøjning, reparation, tilbøjelighed osv.

Python -metoder til regulære udtryk

I Python, re bibliotek indeholder alle de nødvendige funktioner og værktøjer, der kræves for at implementere regex i dine programmer. Du behøver ikke at downloade biblioteket ved hjælp af pip, da det leveres forudinstalleret med Python -tolken.





At importere re bibliotek i Python, tilføj følgende kode til dit script:

import re

Bemærk, at mens vi sender regulære udtryk i Python, bruger vi råstrenge, da de ikke fortolker specialtegn som f.eks n og t anderledes.

Match()

Det re.match () metode i Python returnerer et regex -objekt, hvis programmet finder et match i begyndelsen af ​​den angivne streng. Denne funktion tager to grundlæggende argumenter:

re.match(pattern, string)

...hvor mønster er det regulære udtryk og snor er den tekst, der skal søges efter.

Tag et kig på kodestykket herunder.

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

Det r tegn, før strengen står for rå streng.

Produktion:

None

Ovennævnte kode returnerer Ingen fordi Ord var ikke til stede i begyndelsen af ​​strengen.

Hvis der findes et match, kan du udskrive matchen ved hjælp af gruppe() metode, der tilhører regex -objektet.

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

Produktion:

Word

Det forskning () metode tager lignende argumenter som re.match (). Mens match () kun returnerer kampe til stede i begyndelsen af ​​strengen, Søg() vil returnere kampe fundet på et hvilket 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))

Bemærk, at match() og Søg() metoder returnerer kun et mønstermatch. I ovennævnte kode, Ord vises to gange. Men Søg() funktion vil kun matche den første forekomst af ordet.

Word

FindAlle ()

Som du allerede kan gætte, er findall () metode returnerer alle mulige match 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 at returnere et regex -objekt returnerer funktionen findall () en liste over alle matches. Du kan gentage listen gennem en for loop i python .

Dele()

Hvis du vil opdele en streng i understrenge ved hjælp af et mønster som afgrænser, så dele() funktionen er den, du har brug for.

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

Produktion:

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

Sub ()

Det sub () metode giver en bruger mulighed for at erstatte et bestemt ord i stedet for et mønster. Det tager følgende argumenter.

re.sub(pattern, replacement, string)

Overvej dette kodestykke:

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

Produktion:

Dave or Harry must be punished.

Udarbejde()

Det re.compile () metode i re bibliotek giver en bruger mulighed for at gemme en kompileret version af det normale udtryksmønster i hukommelsen. Derefter kan brugeren ved hjælp af det kompilerede objekt hurtigt filtrere den angivne tekstdump 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 funktion bruges primært til at gemme mønstre, der er ressourcekrævende og har brug for meget tid til at køre. At kompilere og gemme mønsteret som et objekt på forhånd løser dette problem.

Udnyt kraften i Regex med Python

Når du arbejder med tekstfiler og output, er regex et godt værktøj til rådighed. Du kan hurtigt skrive en kode for at filtrere eller erstatte bestemte mønstre i dokumentet.

At huske alle karaktererne og matchende sekvenser kan være svært, hvis du lige er startet med regex. For at blive bedre til regulære udtryk vil henvisning til en liste over tegn, metoder og sekvenser i ny og næ helt sikkert hjælpe dig i det lange løb.

Del Del Tweet E -mail Python RegEx snydeblad til spirende programmører

Brug denne liste over Python -regulære udtryk, så du kan blive bedre til at bruge dette alsidige programmeringssprog.

Læs Næste
Relaterede emner
  • Programmering
  • Programmering
  • Python
Om forfatteren Deepesh Sharma(79 artikler udgivet)

Deepesh er Junior Editor for Linux på MUO. Han skriver informationsguider om Linux med det formål at give alle tilflyttere en salig oplevelse. Ikke sikker på film, men hvis du vil tale om teknologi, er han din fyr. I fritiden kan du finde ham læse bøger, lytte til forskellige musikgenrer eller spille sin guitar.

Mere fra Deepesh Sharma

Abonner på vores nyhedsbrev

Tilmeld dig vores nyhedsbrev for at få tekniske tips, anmeldelser, gratis e -bøger og eksklusive tilbud!

Klik her for at abonnere