W programie, który piszę, Python używa tej re.search()
funkcji do wyszukiwania dopasowań w bloku tekstu i drukowania wyników. Jednak program kończy pracę, gdy znajdzie pierwsze dopasowanie w bloku tekstu.
Jak to zrobić wielokrotnie, gdy program nie zatrzymuje się, dopóki nie zostaną znalezione WSZYSTKIE dopasowania? Czy jest do tego osobna funkcja?
Odpowiedzi:
Użyj
re.findall
lubre.finditer
zamiast.re.findall(pattern, string)
zwraca listę pasujących ciągów.re.finditer(pattern, string)
zwraca iterator nadMatchObject
obiektami.Przykład:
źródło
finditer
tego szukałem. Dziwi mnie, że jeden zwraca obiekty dopasowania, a pozostałe ciągi znaków. Spodziewałem się użyć funkcjimatch_all
lubmatch_iter
.re.search
w pętli. ZwróciMatch
obiekt. Będziesz chciał przekazaćMatch.start() + 1
jakopos
argument zare.search
następną iteracją pętli.findall
zwróci listę pasujących krotek, a nie listę pasujących ciągów.