Jak mogę uzyskać pozycje początkową i końcową wszystkich meczów za pomocą re
modułu? Na przykład biorąc pod uwagę wzór r'[a-z]'
i ciąg znaków 'a1b2c3d4'
, chciałbym uzyskać pozycje, w których znajduje każdą literę. Idealnie, chciałbym również odzyskać tekst dopasowania.
112
Odpowiedzi:
źródło
start()
może akceptować numer grupy, więc jeśli chcesz mieć indeks n-tej grupy, użyjstart(n)
Pochodzą z
Wyrażenia regularne HOWTO
Połącz to z:
W Pythonie 2.2 dostępna jest również metoda finditer (), zwracająca sekwencję instancji MatchObject jako iterator.
powinieneś być w stanie zrobić coś na zlecenie
źródło
re.search(r'abbit', "has abbit of carrot").span(0)
-(4, 9)
span()
jest podobny do „stop” w notacji wycinka Pythona pod tym względem, że idzie do góry, ale nie zawiera tego indeksu; zobacz tutaj .W przypadku Pythona 3.x
Otrzymasz
\n
oddzielne krotki (zawierające odpowiednio pierwszy i ostatni indeks dopasowania) oraz samo dopasowanie dla każdego trafienia w ciągu.źródło
zwróć uwagę, że zakres i grupa są indeksowane w przypadku wielu grup przechwytywania w wyrażeniu regularnym
źródło
4
bierze?