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]