0Pricing
Python Academy · Lekcja

re.sub, flagi i skompilowane wzorce

Proszę zastępować tekst, używać flag takich jak IGNORECASE oraz kompilować wzorce do ponownego użycia.

re.sub, flagi i skompilowane wzorce to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Python Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python Academy zawiera 4 lekcji w sumie.

Wprowadzenie

re.sub zastępuje dopasowania. Flagi modyfikują sposób dopasowywania. Skompilowane wzorce są wydajne przy wielokrotnym użyciu.

Podstawy re.sub

re.sub(pattern, repl, string) zastępuje wszystkie dopasowania ciągiem repl. Czwarty argument count= ogranicza liczbę zastąpień.
import re
result = re.sub(r'\d+', 'X', 'abc 123 def 456')
print(result)

re.sub z grupami

Użyj \1, \2 lub \g<1> w zastąpieniu, aby wstawić przechwycone grupy. Dla nazwanych grup użyj \g.
import re
# Swap first and last name
result = re.sub(r'(\w+),\s*(\w+)', r'\2 \1', 'Smith, John')
print(result)

re.sub z funkcją

Zastąpienie może być obiektem wywoływalnym: f(match) → ciąg zastępujący. Umożliwia to złożone przekształcenia.
import re
def double_num(m): return str(int(m.group())*2)
result = re.sub(r'\d+', double_num, '1 cats and 2 dogs')
print(result)

re.IGNORECASE (re.I)

Sprawia, że wielkość liter we wzorcu nie ma znaczenia. r'hello' z re.I dopasowuje 'HELLO', 'Hello' itd.
import re
print(re.findall(r'hello', 'Hello HELLO hello', re.I))

re.MULTILINE (re.M)

Sprawia, że ^ i $ dopasowują początek i koniec każdego WIERSZA zamiast całego ciągu.
import re
text = 'first\nsecond\nthird'
print(re.findall(r'^\w+', text, re.M))

re.DOTALL (re.S)

Sprawia, że . dopasowuje również znaki nowej linii. Bez tej flagi . zatrzymuje się na granicach wierszy.
import re
text = 'line1\nline2'
print(re.search(r'line1.line2', text, re.S).group())

re.VERBOSE (re.X)

Pozwala używać komentarzy i białych znaków we wzorcu, aby zwiększyć jego czytelność. Spacje są ignorowane; użyj \ + spacja, aby oznaczyć dosłowną spację.
import re
pattern = re.compile(r'''
    (?P<year>\d{4})   # year
    -
    (?P<month>\d{2}) # month
    -
    (?P<day>\d{2})   # day
''', re.X)
print(pattern.search('2024-01-15').groupdict())

Łączenie flag

Połącz flagi za pomocą |: re.I | re.M. Możesz też użyć flag umieszczonych bezpośrednio (?im) na początku wzorca.
import re
print(re.findall(r'^\w+', 'Hello\nWorld', re.I | re.M))

re.compile — wydajność

Skompiluj wzorzec raz za pomocą re.compile(). Wywołuj metody na skompilowanym obiekcie: pat.search(), pat.findall().
import re
email_re = re.compile(r'[\w.+-]+@[\w-]+\.[\w.]+')
emails = ['user@example.com', 'invalid', 'test@test.org']
print([e for e in emails if email_re.fullmatch(e)])

re.escape()

re.escape(string) poprzedza wszystkie specjalne znaki regex w ciągu znaków, dzięki czemu można go użyć jako dosłownego wzorca.
import re
user_input = 'price.is $10+'
pattern = re.compile(re.escape(user_input))
text = 'The price.is $10+ today'
print(bool(pattern.search(text)))

Szybki test

Która flaga sprawia, że . dopasowuje znaki nowej linii w regexach języka Python?

Podsumowanie

re.sub: zastępowanie ciągiem, grupami lub funkcją. Flagi: re.I (wielkość liter), re.M (wielowierszowe ^/$), re.S (kropka dopasowuje \n), re.X (tryb opisowy). Kompiluj wzorce, aby używać ich ponownie.

Działaj dalej

Świetna praca! Czeka na Ciebie następna lekcja.

Często zadawane pytania

Czy lekcja „re.sub, flagi i skompilowane wzorce” jest bezpłatna?

Tak — pełny tekst „re.sub, flagi i skompilowane wzorce” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Python Academy, przejdź na CoddyKit PRO. Kurs Python Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „re.sub, flagi i skompilowane wzorce”?

Proszę zastępować tekst, używać flag takich jak IGNORECASE oraz kompilować wzorce do ponownego użycia. Ćwiczysz Python Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Python Academy?

Nie wymagamy żadnego doświadczenia. Python Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „re.sub, flagi i skompilowane wzorce”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Python Academy?

Tak. Każda lekcja Python Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Podstawy wyrażeń regularnych
  2. Używanie re.match, re.search i re.findall
  3. Grupy i nazwane przechwytywanie
  4. re.sub, flagi i skompilowane wzorce
← Powrót do Python Academy