Regex bạn cần là /(.)\1{9,}/
.
Kiểm tra:
#!perl
use warnings;
use strict;
my $regex = qr/(.)\1{9,}/;
print "NO" if "abcdefghijklmno" =~ $regex;
print "YES" if "------------------------" =~ $regex;
print "YES" if "========================" =~ $regex;
Đây \1
được gọi là một backreference. Nó tham chiếu những gì được ghi lại bởi dấu chấm .
giữa dấu ngoặc (.)
và sau đó là {9,}
yêu cầu cho chín hoặc nhiều ký tự giống nhau. Vì vậy, điều này khớp với mười hoặc nhiều hơn bất kỳ ký tự đơn nào.
Mặc dù kịch bản kiểm tra ở trên bằng Perl, đây là cú pháp regex rất chuẩn và sẽ hoạt động ở bất kỳ ngôn ngữ nào. Trong một số biến thể, bạn có thể cần sử dụng nhiều dấu gạch chéo ngược hơn, ví dụ như Emacs sẽ khiến bạn viết \(.\)\1\{9,\}
ở đây.
Nếu toàn bộ chuỗi phải bao gồm 9 ký tự giống nhau trở lên, hãy thêm các ký tự neo xung quanh mẫu:
my $regex = qr/^(.)\1{9,}$/;