Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Python

Python Reguliere Expressies Onder de Loep: re.match(), re.search(), re.findall() – Praktische Voorbeelden

Wat is een Reguliere Expressie in Python?

reguliere expressie (regex) is een compacte tekstuele beschrijving die Python vertelt hoe patronen binnen een string te lokaliseren. Regexes zijn onmisbaar voor data-extractie, validatie en transformatie in codebases, logs, configuratiebestanden en web-scraping-projecten.

In Python wordt de re module meegeleverd met de interpreter en blootlegt een rijke API voor het compileren van patronen, zoeken en vervangen van tekst. Of je nu gebruikersinvoer filtert, logs parseert of content scrapet van websites, een solide begrip van regex-fundamenten bespaart tijd en vermindert bugs.

Kern Regex Concepten

  • Letterlijke karakters – matchen de exacte tekst die je schrijft.
  • Metakarakteren – speciale symbolen die klassen, ranges of quantifiers beschrijven (bijv. \d, \w, +, ?, *).
  • Ankers – ^ en $ pinnen het patroon aan het begin of einde van een string.
  • Quantifiers – specificeren hoe vaak een token mag herhalen.
  • Groepen & alternatie – vangen sub-matches en staan meerdere opties toe.
  • Flags – passen patroon-gedrag aan (case-insensitief, multiline, etc.).

Algemene Identifier Tabel

IdentifierBeschrijvingWitruimteSpeciale Escape
\dElk cijfer (0-9)\n., +, *, ?, [], $, ^, (, ), {}, |, \
\DNon-cijfer\s
\sSpatie, tab, newline, etc.\t
\SNon-spatie\e
\wAlfanumeriek plus underscore\r
\WNon-alfanumeriek (underscore uitgezonderd)\f
.Elk karakter behalve newline—
\bWoordgrens—
\.Letterlijke punt—
\{x}Precies x voorkomens—

Aan de Slag met re

import re

De re module is onderdeel van Python's standaardbibliotheek en vereist geen externe dependencies. Veelvoorkomende use-cases zijn:

  • String-validatie (bijv. e-mailadressen, telefoonnummers)
  • Data-extractie uit ongestructureerde tekst
  • Geautomatiseerd web-scraping

Voorbeeld 1: \w+ en ^

  • ^ – anker aan het begin van een string.
  • \w+ – één of meer woordkarakters (letters, cijfers, underscore).

Met deze kun je het eerste woord van een string vangen:

import re
sample = "guru99, education is fun"
result = re.findall(r"^\w+", sample)
print(result)  # Output: ['guru99']

Het verwijderen van de + zou alleen het eerste karakter retourneren: ["g"].

Voorbeeld 2: Splitsen op Witruimte met \s

De re.split() functie kan een string splitsen waar een patroon matcht. Met \s splitst het op elk witruimte-teken.

import re
tekst = "we zijn de woorden aan het splitsen"
print(re.split(r"\s", tekst))  # ['we', 'zijn', 'de', 'woorden', 'aan', 'het', 'splitsen']

Als de backslash weggelaten wordt, wordt s als letterlijk behandeld, wat resulteert in splitsingen bij elke s karakter.

Regex Methodes Overzicht

  • re.match() – checkt voor een match alleen aan het begin van de string.
  • re.search() – scant de gehele string en retourneert de eerste match.
  • re.findall() – retourneert een lijst van alle non-overlappende matches.

re.match() Gebruiken

import re
tekst = "guru99 is een geweldig platform"
match = re.match(r"^\w+", tekst)
print(match.group() if match else "Geen match")  # Output: guru99

re.search() Gebruiken

import re
tekst = "Software Testing is leuk"
for patroon in ["Software testing", "guru99"]:
    gevonden = re.search(patroon, tekst, re.IGNORECASE)
    print(f"Zoeken naar '{patroon}' in '{tekst}' - {'gevonden een match!' if gevonden else 'geen match'}")

re.findall() Gebruiken

import re
emails = "guru99@google.com, careerguru99@hotmail.com, users@yahoomail.com"
gevonden = re.findall(r"[\w\.-]+@[\w\.-]+", emails)
for e in gevonden:
    print(e)

Regex Flags

Flags wijzigen patroon-gedrag. Veelvoorkomende flags zijn:

FlagBeschrijving
re.M (re.MULTILINE)Maak ^ en $ matchen met begin en einde van elke regel.
re.I (re.IGNORECASE)Negeer hoofdlettergevoeligheid.
re.S (re.DOTALL)Maak punt matchen met newlines.
re.U (re.UNICODE)Pas Unicode-aware karakterklassen toe.
re.L (re.LOCALE)Maak klassen afhankelijk van de huidige locale.
re.X (re.VERBOSE)Staat witruimte en comments in het patroon toe.

Multiline Voorbeeld

import re
tekst = """guru99
careerguru99
selenium"""
print(re.findall(r"^\w", tekst))           # ['g']
print(re.findall(r"^\w", tekst, re.MULTILINE))  # ['g', 'c', 's']

Python 2 Compatibiliteit

Alle bovenstaande voorbeelden zijn geschreven voor Python 3. Als je ze onder Python 2 moet draaien, vervang print() statements met Python 2-syntaxis en zorg dat de re module op dezelfde manier geïmporteerd wordt.

Kernboodschap

Python regex onder de knie krijgen geeft je een krachtig toolkit voor tekstverwerking:

  • Gebruik re.match() voor patronen geankerd aan het begin.
  • Gebruik re.search() voor een globale zoektocht.
  • Gebruik re.findall() om alle matches te extraheren.
  • Pas flags toe (bijv. re.IGNORECASE, re.MULTILINE) om gedrag fijn af te stellen.
  • Onthoud om patronen te testen met Regex101 of soortgelijke tools voor deployment.

Python

  1. Python's strip()-methode beheersen: Uitgebreide handleiding & praktische voorbeelden
  2. Python's str.count() beheersen: Karakters & substrings tellen met voorbeelden
  3. Python `format()` strings beheersen met duidelijke voorbeelden
  4. Python len(): Praktische handleiding voor het meten van objectlengtes
  5. Python's String.find()-methode beheersen: Syntaxis, voorbeelden & alternatieven
  6. Python round()-functie uitgelegd met praktische voorbeelden
  7. Python's map()-functie beheersen: syntaxis, voorbeelden en best practices
  8. Python timeit() – Uitvoeringstijd meten met praktische voorbeelden
  9. Python Counter in collections – Efficiënt tellen, updaten en rekenkundige operaties
  10. Python list.count(): Expert Gids met Praktische Voorbeelden
  11. Python List index() – Elementposities Vinden met Praktische Voorbeelden