regex /(.)\1{9,}/ที่คุณต้องการ
ทดสอบ:
use warnings;
use strict;
my $regex = qr/(.)\1{9,}/;
print "NO" if "abcdefghijklmno" =~ $regex;
print "YES" if "------------------------" =~ $regex;
print "YES" if "========================" =~ $regex;
ที่นี่\1เรียกว่า backreference มันอ้างอิงถึงสิ่งที่จับโดยจุด .ระหว่างวงเล็บ(.)และจากนั้น{9,}ขอให้เก้าตัวขึ้นไปของอักขระเดียวกัน ดังนั้นจึงจับคู่อักขระเดี่ยวสิบตัวขึ้นไป
แม้ว่าสคริปต์ทดสอบข้างต้นจะอยู่ใน Perl แต่นี่เป็นไวยากรณ์ regex มาตรฐานมากและควรทำงานในภาษาใดก็ได้ ในบางรูปแบบคุณอาจต้องใช้แบ็กสแลชมากกว่านี้เช่น Emacs จะทำให้คุณเขียน\(.\)\1\{9,\}ที่นี่
หากสตริงทั้งหมดควรประกอบด้วยอักขระที่เหมือนกัน 9 ตัวขึ้นไปให้เพิ่มจุดยึดรอบรูปแบบ:
my $regex = qr/^(.)\1{9,}$/;