Om du är programmerare är chansen att du redan vet vad reguljära uttryck (regex) är. Regex-mönster har implementerats i nästan alla vanliga programmeringsspråk, men de flesta utvecklarna känner inte igen kraften och mångsidigheten hos dessa mönster.

Den här guiden handlar om vanliga uttryck och hur du kan använda dem på Python-programmeringsspråket.

Vad är vanliga uttryck?

Regelbundna uttryck är mönster som hjälper en användare att matcha teckenkombinationer i textfiler och strängar. Du kan använda reguljära uttryck för att filtrera eller hitta ett visst mönster i kommandot eller ett dokument.

Det finns olika användningsfall av reguljära uttryck, det mest kända varet grep-kommandot i Linux. Andra applikationer inkluderar informationsfiltrering som att extrahera e-postadresser och telefonnummer från en datadump.

Den främsta anledningen till att många utvecklare avviker från reguljära uttryck är bristen på medvetenhet om kraften i mönstermatchning. Vissa tycker till och med att reguljära uttryck är förvirrande på grund av den stora mängden karaktärer och sekvenser som används i mönstren.

instagram viewer

Oavsett orsaken kan vara, och kommer regelbundna uttryck att vara en av de viktigaste aspekterna av programmering som alla borde veta om.

Regular Expressions: Matchande karaktärer och sekvenser

Regex är ett helt nytt språk i sig. En regex-motor tolkar mönster som består av flera tecken utrustade med specifika betydelser. Grundläggande bokstäver som alfanumeriska tecken matchar sig själva. Men komplexa tecken som $, *, +, {, etc. stöd i matchning av högre ordning.

  1. Asterisk (*): Matchar föregående tecken noll eller flera gånger. Karaktärens bokstavliga betydelse skulle vara "Element multiplicerat n gånger". Till exempel om det reguljära uttrycket är abc *, de matchade strängarna är ab, abc, abcc, abccc, abcccc, etc. Uttrycket [före Kristus]* matchar bc, bcbc, bcbc, etc.
  2. Plus (+): Matchar föregående tecken en eller flera gånger. Arbetet med + karaktär liknar *, men + tecken utelämnar mönstret om karaktären inte förekommer. Till exempel, abc + matchar abc, abcc, abccc, etc. men inte ab.
  3. Frågetecken (?): Matchar föregående tecken noll eller en gång. Till exempel mönstret abc? matchar endast ab och abc.
  4. Rör (|): Används som binär ELLER operatör. Matchar någon av karaktärerna före och efterföljande röret. Till exempel, a | b matchar antingen a eller b.
  5. Punkt (.): Matchar en karaktär vars okänd identitet är. Till exempel, a.c. matchar aac, abc, acc, a2c och så vidare.
  6. Morot (^): Matchar den första karaktären i mönstret. Till exempel, ^ Ra matchar ord som börjar med Ra som kanin, tvättbjörn och slumpmässig.
  7. Dollar ($): Matchar det sista tecknet i mönstret. Till exempel, en $ matchar ord som slutar med ett som Van, Dan och Plan.
  8. Bindestreck (-): Används för att definiera ett teckenintervall. Till exempel, [0-9] matchar alla ensiffriga numeriska tecken.

Speciella sekvenser som används i reguljära uttrycksmönster är:

  1. \ A: Returnerar en matchning om de efterföljande tecknen finns i början av strängen. Till exempel, \ AThe matchar ord som börjar med De som The, Them, They, etc.
  2. \ b: Returnerar en matchning om tecknet finns i början eller i slutet av ett ord. Till exempel, \ bmad och galen \ b matchar ord som gjord och nomad respektive.
  3. \ B: Returnerar en matchning om tecknet inte finns i början eller slutet av ett ord.
  4. \ d: Matchar numeriska tecken som finns i strängen. Till exempel, /d* matchar siffror som 1, 12, 1232, etc.
  5. \ D: Matchar icke-numeriska tecken i strängen. / D matchar a, b, c, f, etc.
  6. \ s: Matchar ett mellanslagstecken i texten.
  7. \ S: Matchar ett tecken som inte är blanksteg i texten.
  8. \ w: Returnerar en matchning om strängen innehåller alfanumeriska tecken inklusive understreck. Till exempel, \ w matchar a, b, c, d, 1, 2, 3, etc.
  9. \ W: Returnerar en matchning om strängen inte innehåller alfanumeriska tecken eller understrykningar.
  10. \ Z: Matchar tecken i slutet av en sträng. Till exempel, slut \ Z matchar ord som slutar med slutet såsom böja, böja, tend, etc.

Python-metoder för reguljära uttryck

I Python, den re biblioteket innehåller alla nödvändiga funktioner och verktyg som krävs för att implementera regex i dina program. Du behöver inte ladda ner biblioteket med pip eftersom det förinstalleras med Python-tolk.

För att importera re bibliotek i Python, lägg till följande kod i ditt skript:

importera om

Observera att när vi skickar reguljära uttryck i Python använder vi rå strängar eftersom de inte tolkar specialtecken som \ n och \ t annorlunda.

Match()

De returmatch() metod i Python returnerar ett regex-objekt om programmet hittar en matchning i början av den angivna strängen. Den här funktionen tar två grundläggande argument:

re.match (mönster, sträng)

...var mönster är det vanliga uttrycket och sträng är texten som behöver sökas.

Ta en titt på kodavsnittet nedan.

importera om
match = re.match (r'Word ', "Denna mening innehåller ett ord")
skriva ut (matcha)

De r tecken innan strängen står för rå sträng.

Produktion:

Ingen

Den ovannämnda koden returnerar Ingen därför att Ord var inte närvarande i början av strängen.

Om en matchning hittas kan du skriva ut matchningen med hjälp av grupp() metod som tillhör regex-objektet.

importera om
match = re.match (r'Word ', "Word är svårt att läsa")
skriva ut (match.group (0))

Produktion:

Ord

Sök()

De forskning() metoden tar liknande argument som re.match (). Medan match () endast returnerar matcher som finns i början av strängen, Sök() returnerar matchningar som finns i valfritt index i strängen.

importera om
match = re.search (r'Word ', "Denna mening innehåller ett ord. Ordet är svårt att läsa. ")
skriva ut (match.group (0))

Observera att match() och Sök() metoder returnerar bara en mönstermatchning. I ovannämnda kod, Ord visas två gånger. Men Sök() funktionen kommer bara att matcha den första förekomsten av ordet.

Ord

Hitta alla()

Som du redan kan gissa, hitta alla() metoden returnerar varje möjlig matchning i strängen.

importera om
match = re.search (r'Word ', "Denna mening innehåller ett ord. Ordet är svårt att läsa. ")
för elem i match:
skriva ut (elem)

I stället för att returnera ett regex-objekt returnerar funktionen findall () en lista över alla matchningar. Du kan gå igenom listan med hjälp av a för loop i python.

Dela()

Om du vill dela en sträng i understrängar med ett mönster som en avgränsare, sedan dela() funktionen är den du behöver.

importera om
split = re.split (r'and ', "Detta ord och det och detta är olika.")
skriva ut (dela)

Produktion:

['Detta ord "," det "," det här är annorlunda. "]

Sub()

De sub() Metoden tillåter en användare att ersätta ett specifikt ord i stället för ett mönster. Det krävs följande argument.

re.sub (mönster, ersättning, sträng)

Tänk på det här kodavsnittet:

importera om
resultat = re.sub (r'and ',' eller ', "Dave och Harry måste straffas.")
skriva ut (resultat)

Produktion:

Dave eller Harry måste straffas.

Sammanställa()

De omkompilera() metod i re biblioteket tillåter en användare att lagra en kompilerad version av det reguljära uttrycksmönstret i minnet. Med hjälp av det kompilerade objektet kan användaren snabbt filtrera den angivna textdumpen efter matchade mönster.

importera om
mönster = re.compile ('Python')
match = pattern.findall ("Python är ett utmärkt språk för att skriva manus. Python är lätt att lära sig. ")
skriva ut (matcha)

Denna funktion används främst för att spara mönster som är resurskrävande och behöver mycket tid att köra. Att kompilera och spara mönstret som ett objekt i förväg löser problemet.

Utnyttja kraften i Regex med Python

När du arbetar med textfiler och utdata är regex ett utmärkt verktyg att ha till ditt förfogande. Du kan snabbt skriva en kod för att filtrera eller ersätta specifika mönster i dokumentet.

Att memorera alla karaktärer och matchande sekvenser kan vara svårt om du bara börjar med regex. För att bli bättre på reguljära uttryck, hänvisar du till en lista med tecken, metoder och sekvenser då och då kommer definitivt att hjälpa dig i det långa loppet.

E-post
Python RegEx Cheat Sheet för spirande programmerare

Använd den här listan med Python-reguljära uttryck så att du kan bli bättre på att använda detta mångsidiga programmeringsspråk.

Läs Nästa

Relaterade ämnen
  • Programmering
  • Programmering
  • Pytonorm
Om författaren
Deepesh Sharma (41 artiklar publicerade)

Deepesh är Junior Editor för Linux på MUO. Han har skrivit informationsinnehåll på internet i över 3 år. På fritiden tycker han om att skriva, lyssna på musik och spela gitarr.

Mer från Deepesh Sharma

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e-böcker och exklusiva erbjudanden!

Ett steg till…!

Bekräfta din e-postadress i e-postmeddelandet som vi just skickade till dig.

.