Jak używać wyrażeń regularnych (Regex) w Pythonie
Opanuj wyrażenia regularne w języku Python, korzystając z wbudowanego modułu re. Naucz się dopasowywania ciągów, wyszukiwania wzorców, znajdowania wszystkich wystąpień i zastępowania tekstu.
Przegląd
Wyrażenia regularne, powszechnie znane jako wyrażenia regularne, to potężne szablony używane do dopasowywania, wyszukiwania i manipulowania ciągami tekstowymi w oparciu o określone wzorce. Regex jest szeroko stosowany do weryfikacji adresu e-mail, sprawdzania poprawności numeru telefonu, przeglądania stron internetowych, analizowania dzienników oraz zadań wyszukiwania i zamiany tekstu. Python zapewnia pełne możliwości wyrażeń regularnych poprzez wbudowany moduł `re`.
Moduł `re` oferuje kilka podstawowych funkcji w zależności od celu. Funkcja `re.search(pattern, string)` skanuje ciąg znaków i zwraca obiekt dopasowania dla pierwszego wystąpienia wzorca. Funkcja `re.match(pattern, string)` jest podobna, ale wyszukuje tylko od samego początku ciągu. Jeśli chcesz pobrać wszystkie wystąpienia wzorca w bloku tekstowym, `re.findall(pattern, string)` zwraca je jako listę ciągów znaków.
Wzorce wyrażeń regularnych wykorzystują specjalne metaznaki, takie jak `\d` dla cyfr, `\w` dla znaków alfanumerycznych, `+` dla jednego lub większej liczby wystąpień oraz `*` dla zera lub więcej. Podczas pisania wyrażeń regularnych w Pythonie standardową praktyką jest używanie surowych literałów łańcuchowych (poprzedzonych przedrostkiem `r`, np. `r"\d+"`), aby zapobiec traktowaniu przez Python ukośników odwrotnych jako sekwencji ucieczki.
Dane wyjściowe kodu i wykonania
Ten skrypt demonstruje sprawdzanie poprawności struktur formatu, wyodrębnianie tokenów numerycznych i zastępowanie dopasowanych wzorców przy użyciu modułu re.
import re
# 1. Searching for a pattern in text
log_message = "ERROR: Connection timeout at 04:30:15 on port 8080"
pattern_port = r"port \d+"
match = re.search(pattern_port, log_message)
if match:
print("Found port pattern:", match.group())
# 2. Extracting all email addresses from a block of text
text = "Contact sales@pyrun.xyz or support@example.com for help."
pattern_email = r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"
emails = re.findall(pattern_email, text)
print("Extracted emails:", emails)
# 3. Replacing patterns using re.sub
date_string = "2026/05/25"
# Replace slashes with dashes
clean_date = re.sub(r"/", "-", date_string)
print("Replaced Date:", clean_date)Found port pattern: port 8080
Extracted emails: ['sales@pyrun.xyz', 'support@example.com']
Replaced Date: 2026-05-25Wdrażanie krok po kroku
- Zaimportuj wbudowany moduł re.
- Zdefiniuj wzorce wyszukiwania wyrażeń regularnych przy użyciu surowych ciągów znaków, takich jak r"\d+", aby uniknąć problemów z sekwencją ucieczki.
- Użyj re.search() aby znaleźć pierwsze wystąpienie lub re.findall() aby zebrać wszystkie pasujące podciągi.
- Użyj re.sub(wzór, zamiana, ciąg), aby wykonać zamianę wewnątrz tekstu na podstawie wzorca.
Często zadawane pytania
Jaka jest korzyść z używania surowych ciągów znaków (r"...") we wzorcach wyrażeń regularnych?
Surowe ciągi traktują ukośniki odwrotne jako znaki dosłowne, a nie znaki ucieczki. Na przykład r"\n" reprezentuje ukośnik odwrotny, po którym następuje "n", podczas gdy "\n" oznacza znak nowej linii.
Jak sprawdzić, czy dopasowanie wyrażenia regularnego powiodło się?
re.search() i re.match() zwracają obiekt dopasowania, jeśli się powiedzie, lub Brak, jeśli nie zostanie znalezione dopasowanie. Powinieneś sprawdzić wynik za pomocą instrukcji warunkowej (np. jeśli pasuje:).
Powiązane tematy
Dowiedz się, jak zamieniać znaki lub podciągi w ciągach Pythona. Opanuj metodę zamiany(), limity zliczania i używanie tłumaczenia dla wielu znaków.
Jak podzielić ciąg w PythonieDowiedz się, jak podzielić ciąg znaków na listę w Pythonie za pomocą metody split(). Poznaj dzielenie według spacji, przecinków, znaków nowej linii i ograniczanie liczby podziałów.
Polecane zasoby Pythona
Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.
Pętle Pythona
Dowiedz się, jak używać pętli Pythona do iteracji danych. Opanuj pętle for, pętle while, przerywaj, kontynuuj i pętluj najlepsze praktyki dzięki interaktywnym przykładom.
Ściągawka dotycząca metod ciągów w Pythonie
Kompletny przewodnik dotyczący manipulacji ciągami znaków w języku Python. Opanuj formatowanie, wyszukiwanie, dzielenie, zastępowanie i sprawdzanie właściwości ciągów.
Python kontra JavaScript: który język programowania jest najlepszy?
Kompleksowe porównanie Pythona i JavaScript. Poznaj różnice w składni, wydajność, przypadki użycia (backend vs frontend) i przykłady kodowania.