python regex overlapping

Python regex ¿encuentra todas las coincidencias superpuestas?



overlapping (3)

Me gustan las expresiones regulares, pero no son necesarias aquí.

Simplemente

s = "123456789123456789" n = 10 li = [ s[i:i+n] for i in xrange(len(s)-n+1) ] print ''/n''.join(li)

resultado

1234567891 2345678912 3456789123 4567891234 5678912345 6789123456 7891234567 8912345678 9123456789

Estoy tratando de encontrar cada serie de números de 10 dígitos dentro de una serie más grande de números usando re en Python 2.6.

Fácilmente no puedo tener coincidencias superpuestas, pero quiero todos los partidos en la serie numérica. P.ej.

en "123456789123456789"

Debería obtener la siguiente lista:

[1234567891,2345678912,3456789123,4567891234,5678912345,6789123456,7891234567,8912345678,9123456789]

He encontrado referencias a un "lookahead", pero los ejemplos que he visto solo muestran pares de números en lugar de grupos más grandes y no he podido convertirlos más allá de los dos dígitos.


También puede intentar usar el nuevo módulo de expresión regular de Python , que admite coincidencias superpuestas.

>>> import regex as re >>> s = "123456789123456789" >>> matches = re.findall(r''/d{10}'', s, overlapped=True) >>> for match in matches: print match ... 1234567891 2345678912 3456789123 4567891234 5678912345 6789123456 7891234567 8912345678 9123456789


import re s = "123456789123456789" matches = re.finditer(r''(?=(/d{10}))'',s) results = [int(match.group(1)) for match in matches] # results: # [1234567891, # 2345678912, # 3456789123, # 4567891234, # 5678912345, # 6789123456, # 7891234567, # 8912345678, # 9123456789]