Devo trovare tutte le corrispondenze in una stringa per una determinata regex. Sto usando findall()
per farlo finché non mi sono imbattuto in un caso in cui non stava facendo quello che mi aspettavo. Per esempio:python - regex search and findall
regex = re.compile('(\d+,?)+')
s = 'There are 9,000,000 bicycles in Beijing.'
print re.search(regex, s).group(0)
> 9,000,000
print re.findall(regex, s)
> ['000']
In questo caso search()
restituisce quello che mi serve (la corrispondenza più lunga), ma findall()
comporta in modo diverso, anche se la documentazione implica che dovrebbe essere lo stesso:
findall()
partite tutte le occorrenze di un modello, non solo il primo comesearch()
fa.
Perché il comportamento diverso?
Come è possibile ottenere il risultato di
search()
confindall()
(o altro)?
try ''([\ d,] +)'' – dawg