Wyprzedzenia
Lekcja 20 z 28 w kursie Wyrażenia regularne w Pythonie w Coddy.
Asercje typu lookahead pozwalają dopasować grupę znaków tylko wtedy, gdy następuje po niej określony wzorzec (pozytywny lookahead) lub gdy nie następuje po niej określony wzorzec (negatywny lookahead). Lookahead nie zużywa znaków w ciągu, a jedynie sprawdza, czy dopasowanie jest możliwe.
- Pozytywny lookahead
<strong>(?=...)</strong>: Dopasowuje grupę znaków tylko wtedy, gdy następuje po niej określony wzorzec. - Negatywny lookahead
<strong>(?!...)</strong>: Dopasowuje grupę znaków tylko wtedy, gdy nie następuje po niej określony wzorzec.
import re
text = "foo1 foo2 foo3 foo"
pattern_positive = r"foo(?=\d)"
pattern_negative = r"foo(?!\d)"
matches_positive = re.findall(pattern_positive, text)
matches_negative = re.findall(pattern_negative, text)
print("Matches with positive lookahead:", matches_positive) # Wynik: ['foo', 'foo', 'foo']
print("Matches with negative lookahead:", matches_negative) # Wynik: ['foo']W powyższym przykładzie wzorzec foo(?=\d) dopasowuje „foo” tylko wtedy, gdy następuje po nim cyfra, natomiast wzorzec foo(?!\d) dopasowuje „foo” tylko wtedy, gdy nie następuje po nim cyfra.
Wyzwanie
ŁatwyNapisz funkcję o nazwie find_numbers_followed_by_words, która przyjmuje ciąg tekstowy jako dane wejściowe i zwraca listę liczb, po których występuje słowo.
Spróbuj swoich sił
import re
def find_numbers_followed_by_words(text):
# Napisz kod tutajWszystkie lekcje w sekcji Wyrażenia regularne w Pythonie
1Wprowadzenie
Wprowadzenie5Grupowanie i zaawansowane wzorce
GrupowaniePrzechwytywanieOperator potokuAlternatywaWyprzedzeniaSprawdzenia wstecznePoćwicz samodzielnie: Kompilator Python online