Próbuję znaleźć co 10 cyfr serii liczb w większej serii liczb przy użyciu ponownie w Pythonie 2.6.Python regex znaleźć wszystkie pokrywające się mecze?
Z łatwością łapię nie nakładające się mecze, ale chcę każdy mecz w serii liczbowej. Na przykład.
w „123456789123456789”
powinienem dostać następującą listę:
[1234567891,2345678912,3456789123,4567891234,5678912345,6789123456,7891234567,8912345678,9123456789]
mam znaleźć odniesienia do „uprzedzona”, ale przykłady widziałem pokazują tylko pary liczb raczej niż większe grupy i nie mogłem ich przekonwertować poza dwie cyfry.
Przedstawione rozwiązania nie będą działać, gdy nakładające się mecze rozpoczną się w tym samym punkcie, np. Dopasowanie "a | ab | Czy istnieje rozwiązanie, które nie wymaga wielokrotnego wywoływania match(), ręcznie śledząc granicę "końca"? –
@ VítorDeAraújo: nakładające się wyrażenia regularne, takie jak '(a | ab | abc)", można ogólnie przepisać jako niepokrywające się z zagnieżdżonymi grupami przechwytywania, np. '(a (b (c)?)?)?', gdzie ignorujemy wszystkie poza zewnętrzną (tj. lewą) grupą przechwytującą podczas rozpakowywania dopasowania; wprawdzie jest to nieco bolesne i mniej czytelne. Będzie to również bardziej efektywne wyrażenie regularne do dopasowania. – smci