Lookbehind
Lezione 21 di 28 del corso Espressioni regolari in Python di Coddy.
I lookbehind sono asserzioni che consentono di trovare una corrispondenza con un gruppo di caratteri solo se sono preceduti (lookbehind positivo) o non preceduti (lookbehind negativo) da uno specifico pattern. Come i lookahead, i lookbehind non consumano caratteri nella stringa.
- Lookbehind positivo
<strong>(?<=...)</strong>: Trova una corrispondenza con un gruppo di caratteri solo se è preceduto da uno specifico pattern. - Lookbehind negativo
<strong>(?<!...)</strong>: Trova una corrispondenza con un gruppo di caratteri solo se non è preceduto da uno specifico pattern.
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) # Output: ['foo']
print("Matches with negative lookbehind:", matches_negative) # Output: ['foo', 'foo', 'foo']Nell'esempio precedente, il pattern (?<=\d)foo trova una corrispondenza con "foo" solo se è preceduto da una cifra, mentre il pattern (?<!\d)foo trova una corrispondenza con "foo" solo se non è preceduto da una cifra.
Sfida
FacileScrivi una funzione denominata find_words_preceded_by_numbers che accetta una stringa di testo in input e restituisce un elenco di parole precedute da un numero.
Provalo tu
import re
def find_words_preceded_by_numbers(text):
# Scrivi il codice quiTutte le lezioni di Espressioni regolari in Python
1Introduzione
Introduzione3Sintassi di base dei pattern
Metacaratteri di baseLetteraliClassi di caratteriIntervalliClassi predefinite comuniClassi predefinite avanzateEsercitati da solo: Compilatore Python online