{} - مطابقة عنصر مع عدد محدد من المرات
• { و } تستخدم الحروف الأولية للتعبير عن الحد الأدنى والأقصى لعدد المطابقات المطلوبة. يمكن تحديدها بأربع طرق ممكنة:
جدول 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 ~] $
كما نرى ، يمكن أن يتحقق التعبير المعدل بنجاح من صحة الأرقام سواء مع الأقواس أو بدونها ، مع رفض تلك الأرقام التي لم يتم تنسيقها بشكل صحيح.