Sprawdzenia wsteczne
Lekcja 21 z 28 w kursie Wyrażenia regularne w Pythonie w Coddy.
Wyrażenia typu lookbehind to asercje, które pozwalają dopasować grupę znaków tylko wtedy, gdy jest ona poprzedzona (pozytywne lookbehind) lub nie jest poprzedzona (negatywne lookbehind) określonym wzorcem. Podobnie jak wyrażenia typu lookahead, lookbehind nie zużywają znaków w ciągu.
- Pozytywne lookbehind
<strong>(?<=...)</strong>: Dopasowuje grupę znaków tylko wtedy, gdy jest ona poprzedzona określonym wzorcem. - Negatywne lookbehind
<strong>(?<!...)</strong>: Dopasowuje grupę znaków tylko wtedy, gdy nie jest ona poprzedzona określonym wzorcem.
import re
text = "1foo 2foo 3foo foo"
pattern_positive = r"(?<=\d)foo"
pattern_negative = r"(?<!\d)foo"
matches_positive = re.findall(pattern_positive, text)
matches_negative = re.findall(pattern_negative, text)
print("Matches with positive lookbehind:", matches_positive) # Wynik: ['foo']
print("Matches with negative lookbehind:", matches_negative) # Wynik: ['foo', 'foo', 'foo']W powyższym przykładzie wzorzec (?<=\d)foo dopasowuje „foo” tylko wtedy, gdy jest poprzedzone cyfrą, podczas gdy wzorzec (?<!\d)foo dopasowuje „foo” tylko wtedy, gdy nie jest poprzedzone cyfrą.
Wyzwanie
ŁatwyNapisz funkcję o nazwie find_words_preceded_by_numbers, która przyjmuje ciąg tekstowy jako dane wejściowe i zwraca listę słów poprzedzonych liczbą.
Spróbuj swoich sił
import re
def find_words_preceded_by_numbers(text):
# Wpisz kod tutajWszystkie lekcje w sekcji Wyrażenia regularne w Pythonie
1Wprowadzenie
Wprowadzenie5Grupowanie i zaawansowane wzorce
GrupowaniePrzechwytywanieOperator potokuAlternatywaWyprzedzeniaSprawdzenia wstecznePoćwicz samodzielnie: Kompilator Python online