{} - مطابقة عنصر مع عدد محدد من المرات
إنّ { } تُستخدم الأحرف الوصفية للتعبير عن الحد الأدنى والحد الأقصى لعدد التطابقات المطلوبة. ويمكن تحديدها بأربع طرق ممكنة:
الجدول 19-3: تحديد عدد المباريات
معنى المحدد
معنى المحدد
{n} قم بمطابقة العنصر السابق إذا حدث بالضبط n .
{n,m} قم بمطابقة العنصر السابق إذا حدث على الأقل n مرات، ولكن ليس أكثر من m .
{n,} قم بمطابقة العنصر السابق إذا حدث n أو أكثر.
{,m} قم بمطابقة العنصر السابق إذا لم يحدث أكثر من m .
بالعودة إلى مثالنا السابق مع أرقام الهواتف، يمكننا استخدام طريقة تحديد التكرارات لتبسيط تعبيرنا العادي الأصلي من:
^\(?[0-9][0-9][0-9]\)? [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$
إلى عام
^\(?[0-9]{3}\)? [0-9]{3}-[0-9]{4}$
فلنجربها:
[me @ linuxbox ~] $ صدى "(555) 123-4567" | grep -E '^\(?[0-9]{3}\)? [0- 9]{3}-[0-9]{4}$'
(555) 123-4567
[me @ linuxbox ~] $ صدى "555 123-4567" | grep -E '^\(?[0-9]{3}\)? [0-9]
{3}-[0-9]{4}$'
555 123-4567
[me @ linuxbox ~] $ صدى "5555 123-4567" | grep -E '^\(?[0-9]{3}\)? [0-9
]{3}-[0-9]{4}$'
[me @ linuxbox ~] $
[me @ linuxbox ~] $ صدى "(555) 123-4567" | grep -E '^\(?[0-9]{3}\)? [0- 9]{3}-[0-9]{4}$'
(555) 123-4567
[me @ linuxbox ~] $ صدى "555 123-4567" | grep -E '^\(?[0-9]{3}\)? [0-9]
{3}-[0-9]{4}$'
555 123-4567
[me @ linuxbox ~] $ صدى "5555 123-4567" | grep -E '^\(?[0-9]{3}\)? [0-9
]{3}-[0-9]{4}$'
[me @ linuxbox ~] $
كما نرى، يمكن لتعبيرنا المنقح التحقق بنجاح من صحة الأرقام مع الأقواس وبدونها، مع رفض الأرقام التي لم يتم تنسيقها بشكل صحيح.