La expresión regular que necesita es /(.)\1{9,}/
.
Prueba:
#!perl
use warnings;
use strict;
my $regex = qr/(.)\1{9,}/;
print "NO" if "abcdefghijklmno" =~ $regex;
print "YES" if "------------------------" =~ $regex;
print "YES" if "========================" =~ $regex;
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:
my $regex = qr/^(.)\1{9,}$/;