2011-06-29 10 views
7

Estoy tratando de usar expresiones regulares para encontrar tres o más del mismo carácter en una cadena. Entonces, por ejemplo: 'hello' no coincidiría con 'ohhh' would.que coincide con 3 o más del mismo personaje en python

He intentado hacer las cosas como:

re.compile('(?!.*(.)\1{3,})^[a-zA-Z]*$') 
re.compile('(\w)\1{5,}') 

pero ninguno parece funcionar.

+0

¿Qué pasa con su segundo enfoque? (Coincidirá con al menos 6 caracteres, pero básicamente debería funcionar) – stema

+0

los mismos tres caracteres consecutivamente, o simplemente el mismo carácter repetido tres veces en cualquier lugar de la cadena? es decir, ¿sería 'hohoho' coincidir o no? – Spudley

+0

El segundo enfoque funciona, aunque ligeramente modificado para r '(\ w) \ 1 {2,}'. Estaba usando .match en lugar de .search, por lo que no estaba viendo los resultados que esperaba. – Adam

Respuesta

10

(\w)\1{2,} es la expresión regular que está buscando.

En Python podría ser citado como r"(\w)\1{2,}"

2

si usted está buscando el mismo personaje tres veces consecutivas, se puede hacer esto:

(\w)\1\1 

si quiere encontrar el mismo carácter de tres tiempos en cualquier lugar de la cadena, es necesario poner un punto y un asterisco entre las partes de la expresión anterior, así:

(\w).*\1.*\1 

el .* coincide con cualquier número de cualquier carácter, por lo que esta expresión debe coincidir con cualquier cadena que tenga un solo carácter de palabra que aparezca tres o más veces, con cualquier número de caracteres entre ellos.

Espero que ayude.

Cuestiones relacionadas