Regex yang Anda butuhkan adalah /(.)\1{9,}/
.
Uji:
#!perl
use warnings;
use strict;
my $regex = qr/(.)\1{9,}/;
print "NO" if "abcdefghijklmno" =~ $regex;
print "YES" if "------------------------" =~ $regex;
print "YES" if "========================" =~ $regex;
Di sini yang \1
disebut referensi latar. Ini merujuk pada apa yang ditangkap oleh titik di .
antara tanda kurung (.)
dan kemudian {9,}
meminta sembilan atau lebih karakter yang sama. Jadi ini cocok dengan sepuluh atau lebih karakter tunggal apa pun.
Meskipun skrip pengujian di atas ada di Perl, ini adalah sintaks regex yang sangat standar dan harus berfungsi dalam bahasa apa pun. Pada beberapa varian Anda mungkin perlu menggunakan lebih banyak garis miring terbalik, misalnya Emacs akan membuat Anda menulis di \(.\)\1\{9,\}
sini.
Jika seluruh string harus terdiri dari 9 atau lebih karakter identik, tambahkan jangkar di sekitar pola:
my $regex = qr/^(.)\1{9,}$/;