docs Il Python per findall()
e finditer()
stato che:Perché Python findall() e finditer() restituiscono corrispondenze vuote su ricerche non mantenute. *?
corrispondenze vuote vengono incluse nel risultato a meno che non toccano la inizio di un'altra partita
Questo può essere dimostrato come segue:
In [20]: [m.span() for m in re.finditer('.*', 'test')]
Out[20]: [(0, 4), (4, 4)]
Qualcuno può dirmi comunque, perché questo schema restituisce una corrispondenza vuota in primo luogo? Non dovrebbe .*
consumare l'intera stringa e restituire una singola corrispondenza? E inoltre, perché non c'è nessuna corrispondenza vuota alla fine se ancoro il pattern all'inizio della stringa? per esempio.
In [22]: [m.span() for m in re.finditer('^.*', 'test')]
Out[22]: [(0, 4)]
In che modo un modello di ancoraggio iniziale * mai * corrisponde a qualcosa alla fine? –
È un punto giusto. – Vortura