Hvis du er 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 mainstream-programmeringssprog, men de fleste udviklers genkendelse af kraften og alsidigheden i disse mønstre er stadig ikke.

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

Hvad er regulære udtryk?

Regulære 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 af en kommando eller et dokument.

Der er forskellige brugstilfælde af regulære udtryk, det mest kendte væsen grep-kommandoen i Linux. Andre applikationer inkluderer informationsfiltrering såsom udpakning af e-mail-adresser og telefonnumre fra en datadump.

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

instagram viewer

Uanset årsagen kan være, er og vil regelmæssige udtryk være et af de vigtigste aspekter af programmering, som alle burde vide om.

Regulære 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 $, *, +, {osv. hjælp til højere ordens matchning.

  1. Asterisk (*): Matcher det foregående tegn nul eller flere gange. Den bogstavelige betydning af tegnet 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. Plus (+): Matcher det foregående tegn en eller flere gange. Arbejdet i + 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ølger røret. For eksempel, a | b vil matche enten a eller b.
  5. Punkt (.): Matcher et tegn, hvis identitet er ukendt. For eksempel, a.c. vil matche aac, abc, acc, a2c osv.
  6. Gulerod (^): Matcher det første tegn i mønsteret. For eksempel, ^ Ra vil matche ord, der starter med Ra 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] vil matche alle encifrede numeriske tegn.

Specielle sekvenser anvendt i mønstre med regulært udtryk er:

  1. \EN: 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 De, Dem, De osv.
  2. \ b: Returnerer et match, hvis tegnet findes i begyndelsen eller slutningen af ​​et ord. For eksempel, \ bmad og gal \ b vil matche ord som f.eks lavet og nomad henholdsvis.
  3. \ B: Returnerer et match, hvis tegnet ikke findes i begyndelsen eller slutningen af ​​et ord.
  4. \ d: Matcher numeriske tegn til stede 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 tegn, der ikke er mellemrum i teksten.
  8. \ w: Returnerer et match, hvis strengen indeholder alfanumeriske tegn inklusive understregninger. For eksempel, \ w vil matche a, b, c, d, 1, 2, 3 osv.
  9. \ W: Returnerer et match, hvis strengen ikke indeholder alfanumeriske tegn eller understregninger.
  10. \ Z: Matcher tegn i slutningen af ​​en streng. For eksempel, afslut \ Z vil matche ord, der slutter med ende såsom bøjning, reparation, tendens osv.

Python-metoder til regulære udtryk

I Python er re biblioteket indeholder alle de nødvendige funktioner og hjælpeprogrammer, 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-tolk.

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

import gen

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 (mønster, streng)

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

Se på kodestykket nedenfor.

import gen
match = re.match (r'Word ', "Denne sætning indeholder et ord")
print (match)

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

Produktion:

Ingen

Den førnævnte kode vender tilbage Ingen fordi Ord var ikke til stede i begyndelsen af ​​strengen.

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

import gen
match = re.match (r'Word ', "Word er svært at læse")
print (match.group (0))

Produktion:

Ord

Søg()

Det forskning() metoden tager lignende argumenter som re.match (). Mens match () kun returnerer matches til stede i begyndelsen af ​​strengen, Søg() returnerer match fundet i ethvert indeks i strengen.

import gen
match = re.search (r'Word ', "Denne sætning indeholder et ord. Ord er svært at læse. ")
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() funktionen vil kun matche den første forekomst af ordet.

Ord

FindAlle ()

Som du allerede kan gætte, er findall () metoden returnerer alle mulige match i strengen.

import gen
match = re.search (r'Word ', "Denne sætning indeholder et ord. Ord er svært at læse. ")
for elem i kamp:
print (elem)

I stedet for at returnere et regex-objekt returnerer findall () -funktionen en liste over alle matches. Du kan gentage listen ved hjælp af en til loop i python.

Dele()

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

import gen
split = re.split (r'and ', "Dette ord og det og dette er forskellige.")
print (split)

Produktion:

['Dette ord "," at "," dette er anderledes. "]

Under ()

Det under () metode tillader en bruger at erstatte et bestemt ord i stedet for et mønster. Det kræver følgende argumenter.

re.sub (mønster, erstatning, streng)

Overvej dette kodestykke:

import gen
resultat = re.sub (r'and ',' eller ', "Dave og Harry skal straffes.")
print (resultat)

Produktion:

Dave eller Harry skal straffes.

Udarbejde()

Det re.compile () metode i re bibliotek giver en bruger mulighed for at gemme en kompileret version af det regulære udtryksmønster i hukommelsen. Derefter kan brugeren ved hjælp af det kompilerede objekt hurtigt filtrere den angivne tekstdump til matchede mønstre.

import gen
mønster = re.compile ('Python')
match = pattern.findall ("Python er et fantastisk sprog til at skrive scripts. Python er let at lære. ")
print (match)

Denne funktion bruges primært til at gemme mønstre, der er ressourceintensive og har brug for meget tid til at køre. Kompilering og gemning af mønsteret som et objekt på forhånd løser dette problem.

Udnyt styrken ved Regex med Python

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

At huske alle tegnene og matchende sekvenser kan være svært, hvis du lige starter med regex. For at blive bedre til regelmæssige udtryk, vil henvisning til en liste med tegn, metoder og sekvenser nu og da helt sikkert hjælpe dig i det lange løb.

E-mail
Python RegEx Cheat Sheet for spirende programmerere

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 (41 udgivne artikler)

Deepesh er Junior Editor til Linux på MUO. Han har skrevet informativt indhold på internettet i over 3 år. I sin fritid nyder han at skrive, lytte til musik og spille sin guitar.

Mere fra Deepesh Sharma

Abonner på vores nyhedsbrev

Deltag i vores nyhedsbrev for tekniske tip, anmeldelser, gratis e-bøger og eksklusive tilbud!

Et trin mere !!!

Bekræft din e-mail-adresse i den e-mail, vi lige har sendt dig.

.