Python reguljära uttryck på ett enkelt sätt

Reguljära uttryck (regex) är kraftfulla verktyg som används för att matcha och manipulera strängar baserat på mönster. I Python ger modulen re stöd för reguljära uttryck, vilket gör att du kan utföra komplexa strängoperationer effektivt. Den här artikeln kommer att introducera dig till grunderna för reguljära uttryck och visa dig hur du använder dem effektivt i Python.

Komma igång med re-modulen

För att använda reguljära uttryck i Python måste du importera modulen re. Den här modulen tillhandahåller flera funktioner för att arbeta med regexmönster:

  • re.match() - Söker efter en matchning endast i början av strängen.
  • re.search() - Söker igenom hela strängen efter en matchning.
  • re.findall() - Hittar alla matchningar i strängen och returnerar dem som en lista.
  • re.sub() - Ersätter matchningar i strängen med en specificerad ersättning.

Grundläggande mönstermatchning

Reguljära uttryck använder specialtecken för att definiera sökmönster. Här är några grundläggande mönster:

  • . - Matchar alla enstaka tecken utom nyrad.
  • \d - Matchar valfri siffra (motsvarande [0-9]).
  • \w - Matchar alla alfanumeriska tecken (motsvarande [a-zA-Z0-9_]).
  • \s ​​- Matchar alla blanksteg.
  • ^ - Matchar början av strängen.
  • $ - Matchar slutet av strängen.

Exempel

Här är några exempel som visar grundläggande mönstermatchning:

import re

# Match a pattern at the beginning of a string
result = re.match(r'Hello', 'Hello, World!')
print(result.group())  # Output: Hello

# Search for a pattern in the entire string
result = re.search(r'\d+', 'There are 24 hours in a day.')
print(result.group())  # Output: 24

Använda reguljära uttryck med grupper

Grupper används för att fånga delar av den matchade texten. De definieras med parenteser. Till exempel, för att extrahera specifika delar av ett mönster kan du använda grupper:

pattern = r'(\d{3})-(\d{2})-(\d{4})'
text = 'My number is 123-45-6789.'

# Find all matches with groups
match = re.search(pattern, text)
if match:
    print(f'Area Code: {match.group(1)}')  # Output: 123
    print(f'Prefix: {match.group(2)}')     # Output: 45
    print(f'Suffix: {match.group(3)}')     # Output: 6789

Använda specialtecken

Reguljära uttryck innehåller flera specialtecken för mer komplex mönstermatchning:

  • * - Matchar 0 eller fler förekomster av föregående element.
  • + - Matchar 1 eller flera förekomster av föregående element.
  • ? - Matchar 0 eller 1 förekomst av föregående element.
  • {n} - Matchar exakt n förekomster av föregående element.
  • | - Matchar antingen mönstret före eller mönstret efter det.

Exempel

Här är några exempel med specialtecken:

# Match a pattern with 0 or more occurrences
result = re.findall(r'\d*', '123 abc 456')
print(result)  # Output: ['123', '', '', '456']

# Match a pattern with 1 or more occurrences
result = re.findall(r'\d+', 'There are 24 apples and 3 oranges.')
print(result)  # Output: ['24', '3']

Ersätter text med reguljära uttryck

Funktionen re.sub() används för att ersätta delar av strängen som matchar ett mönster:

text = 'The rain in Spain falls mainly in the plain.'

# Replace 'Spain' with 'France'
new_text = re.sub(r'Spain', 'France', text)
print(new_text)  # Output: The rain in France falls mainly in the plain.

Slutsats

Reguljära uttryck är ett kraftfullt verktyg för mönstermatchning och textmanipulation i Python. Med modulen re kan du söka, matcha och ersätta text baserat på komplexa mönster. Genom att förstå den grundläggande syntaxen och specialtecken kan du utnyttja reguljära uttryck för att effektivt hantera ett brett utbud av textbearbetningsuppgifter.