Необходимое регулярное выражение: /(.)\1{9,}/
.
Тест:
#!perl
use warnings;
use strict;
my $regex = qr/(.)\1{9,}/;
print "NO" if "abcdefghijklmno" =~ $regex;
print "YES" if "------------------------" =~ $regex;
print "YES" if "========================" =~ $regex;
Здесь \1
называется обратной ссылкой. Он ссылается на то, что зафиксировано точкой .
в скобках (.)
, а затем {9,}
запрашивает девять или более одинаковых символов. Таким образом, это соответствует десяти или более из любого отдельного символа.
Хотя приведенный выше тестовый скрипт написан на Perl, это очень стандартный синтаксис регулярных выражений, который должен работать на любом языке. В некоторых вариантах вам может понадобиться использовать больше обратной косой черты, например, Emacs заставит вас написать \(.\)\1\{9,\}
здесь.
Если вся строка должна состоять из 9 или более одинаковых символов, добавьте привязки вокруг шаблона:
my $regex = qr/^(.)\1{9,}$/;