Nybörjarguiden för reguljära uttryck med Python

Nybörjarguiden för reguljära uttryck med Python

Om du är en programmerare är chansen stor att du redan vet vad reguljära uttryck (regex) är. Regex -mönster har implementerats i nästan alla vanliga programmeringsspråk, men fortfarande är kraften och mångsidigheten hos dessa mönster okända av de flesta utvecklare.





Den här guiden handlar om reguljära uttryck och hur du kan använda dem i programmeringsspråket Python.





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 specifikt mönster i utdata från ett kommando eller ett dokument.





Det finns olika användningsfall av reguljära uttryck, det mest kända varelsen kommandot grep 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 vanliga 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 tecken och sekvenser som används i mönstren.



Oavsett orsaken är och kommer regelbundna uttryck att vara en av de viktigaste aspekterna av programmering som alla borde känna till.

facebook logga in med ett annat konto

Regelbundna uttryck: Matchande tecken 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. hjälper till att matcha högre ordning.





  1. Asterisk (*): Matchar föregående tecken noll eller fler gånger. Karaktärens bokstavliga betydelse skulle vara 'Element multiplicerat n gånger'. Till exempel om det reguljära uttrycket är abc * , strängarna som matchas kommer att vara ab, abc, abcc, abccc, abcccc, etc. Uttrycket [före Kristus]* kommer att matcha bc, bcbc, bcbc, etc.
  2. Mer (+): Matchar föregående tecken en eller flera gånger. Arbetet med + karaktär liknar * , men + tecken utelämnar mönstret om tecknet inte förekommer. Till exempel, abc + kommer att matcha 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 efter pipen. Till exempel, a | b kommer att matcha antingen a eller b.
  5. Punkt (.): Matchar en karaktär vars identitet är okänd. Till exempel, a.c kommer att matcha aac, abc, acc, a2c, och så vidare.
  6. Morot (^): Matchar det första tecknet i mönstret. Till exempel, ^Ra kommer att matcha ord som börjar med Ut såsom kanin, tvättbjörn och slumpmässig.
  7. Dollar ($): Matchar det sista tecknet i mönstret. Till exempel, en $ kommer att matcha ord som slutar med ett som Van, Dan och Plan.
  8. Bindestreck (-): Används för att definiera en rad tecken. Till exempel, [0-9] kommer att matcha alla ensiffriga numeriska tecken.

Särskilda sekvenser som används i vanliga uttrycksmönster är:

  1. TILL: Returnerar en matchning om de efterföljande tecknen finns i början av strängen. Till exempel, AThe kommer att matcha ord som börjar med De som The, Them, They, etc.
  2. b: Returnerar en matchning om tecknet hittas antingen i början eller i slutet av ett ord. Till exempel, bmad och galen b kommer att matcha ord som gjord och nomad respektive.
  3. B: Returnerar en matchning om tecknet inte hittas i början eller slutet av ett ord.
  4. d: Matchar numeriska tecken som finns i strängen. Till exempel, /d* kommer att matcha nummer som 1, 12, 1232, etc.
  5. D: Matchar icke-numeriska tecken i strängen. /D kommer att matcha a, b, c, f, etc.
  6. s: Matchar ett blankstegstecken i texten.
  7. S: Matchar ett tecken som inte är mellanrum i texten.
  8. i: Returnerar en matchning om strängen innehåller alfanumeriska tecken inklusive understrykningar. Till exempel, i kommer att matcha a, b, c, d, 1, 2, 3, etc.
  9. I: Returnerar en matchning om strängen inte innehåller alfanumeriska tecken eller understryker.
  10. MED: Matchar tecken i slutet av en sträng. Till exempel, slut Z kommer att matcha ord som slutar med slutet som att böja, reparera, tendera, etc.

Python -metoder för reguljära uttryck

I Python, re biblioteket tillhandahå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 är förinstallerat med Python -tolken.





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

import re

Observera att när vi skickar reguljära uttryck i Python använder vi råa strängar eftersom de inte tolkar specialtecken som t.ex. 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. Denna funktion tar två grundläggande argument:

re.match(pattern, string)

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

Ta en titt på kodavsnittet nedan.

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

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

Produktion:

None

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

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

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

Produktion:

Word

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

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
print(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.

Word

Hitta alla()

Som du redan kan gissa är hitta alla() metod returnerar alla möjliga matchningar i strängen.

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

Istället för att returnera ett regex -objekt returnerar funktionen findall () en lista över alla matchningar. Du kan iterera genom listan med en för loop i python .

Dela()

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

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()

De sub() metod 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(pattern, replacement, string)

Tänk på det här kodavsnittet:

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

Produktion:

Dave or Harry must be punished.

Sammanställa()

De omkompilera() metod i re bibliotek tillåter en användare att lagra en sammanställd version av det reguljära uttrycksmönstret i minnet. Med det kompilerade objektet kan användaren sedan snabbt filtrera den angivna textdumpen för matchade mönster.

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

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

Utnyttja kraften i Regex med Python

När du arbetar med textfiler och utdata är regex ett bra 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 kommer det definitivt att hjälpa dig på lång sikt att hänvisa till en lista med karaktärer, metoder och sekvenser då och då.

Dela med sig Dela med sig Tweet E-post Python RegEx fuskblad för spirande programmerare

Använd den här listan över 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(79 artiklar publicerade)

Deepesh är Junior Editor för Linux på MUO. Han skriver informationsguider på Linux, i syfte att ge alla nykomlingar en lycklig upplevelse. Osäker på filmer, men om du vill prata om teknik är han din kille. På fritiden kan du hitta honom läsa böcker, lyssna på olika musikgenrer eller 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!

Klicka här för att prenumerera