Estoy buscando una expresión regular simple para que el mismo carácter se repita más de 10 veces. Entonces, por ejemplo, si tengo un documento lleno de líneas horizontales:
=================================================
Coincidirá con la línea de =
caracteres porque se repite más de 10 veces. Tenga en cuenta que me gustaría que esto funcione para cualquier personaje.
Respuestas:
La expresión regular que necesita es
/(.)\1{9,}/
.Prueba:
Aquí
\1
se llama referencia inversa. Hace referencia a lo que está capturado por el punto.
entre los corchetes(.)
y luego{9,}
pide nueve o más del mismo carácter. Por lo tanto, esto coincide con diez o más de cualquier carácter.Aunque el script de prueba anterior está en Perl, esta es una sintaxis de expresiones regulares muy estándar y debería funcionar en cualquier idioma. En algunas variantes, es posible que necesite utilizar más barras invertidas, por ejemplo, Emacs le haría escribir
\(.\)\1\{9,\}
aquí.Si una cadena completa debe constar de 9 o más caracteres idénticos, agregue anclas alrededor del patrón:
fuente
En Python puedes usar
(.)\1{9,}
ejemplo:
Salida:
fuente
.
coincide con cualquier personaje. Usado junto con las llaves ya mencionadas:fuente
grep -E '([=o])\1{10}' test
ygrep -E '([=o]){10}' test
funcionan bien con su ejemplo (tenga en cuenta la falta de\1
en el segundo comando). ¡Pero el comandogrep -E '([=o])\1{10}' <<< '==o==o==o==o==o==o===o==o==='
no coincide con la línea! Sin embargo, el comando sin\1
partidos la línea:grep -E '([=o]){10}' <<< '==o==o==o==o==o==o===o==o==='
. ¿Podría explicarme? Saludos;)En algunas aplicaciones, debes eliminar las barras para que funcione.
o esto:
fuente
use el operador {10,}:
fuente
También puede usar PowerShell para reemplazar rápidamente palabras o repticiones de caracteres. PowerShell es para Windows. La versión actual es 3.0.
fuente
preg_replace
Ejemplo de PHP :Aquí
[a-z]
golpea el carácter,()
luego permite que se use con\\1
referencia inversa que intenta hacer coincidir otro mismo carácter (tenga en cuenta que esto ya está apuntando a 2 caracteres consecutivos), así:Si lo hiciste:
eso sería borrar 3 caracteres repetidos consecutivos, dando como resultado:
fuente
coincidencias
=
que se repiten 10 o más veces.fuente
perl -e 'print "NO" if "abcdefghijklmno" =~ /.{10,}/;'
Un ejemplo de PowerShell un poco más genérico. En powershell 7, la coincidencia se resalta incluido el último espacio (¿puedes resaltar en la pila?).
fuente