Le regex dont vous avez besoin est /(.)\1{9,}/
.
Test:
#!perl
use warnings;
use strict;
my $regex = qr/(.)\1{9,}/;
print "NO" if "abcdefghijklmno" =~ $regex;
print "YES" if "------------------------" =~ $regex;
print "YES" if "========================" =~ $regex;
Ici, le \1
est appelé backreference. Il fait référence à ce qui est capturé par le point .
entre les parenthèses (.)
, puis le {9,}
demande neuf ou plus du même caractère. Ainsi, cela correspond à dix ou plus d'un seul caractère.
Bien que le script de test ci-dessus soit en Perl, il s'agit d'une syntaxe regex très standard qui devrait fonctionner dans n'importe quel langage. Dans certaines variantes, vous devrez peut-être utiliser davantage de barres obliques inverses, par ex. Emacs vous ferait écrire \(.\)\1\{9,\}
ici.
Si une chaîne entière devrait être composé de 9 ou plusieurs caractères identiques, ajouter des ancres autour du modèle:
my $regex = qr/^(.)\1{9,}$/;
le titre de ce asnwer est trompeur, vous devriez avoir dit « régulier expression pour correspondre à tout caractère répété plus de 10 fois ' – dalloliogm