{ } - یک عنصر را با تعداد معینی مطابقت دهید
La { و } متاکاراکترها برای بیان حداقل و حداکثر تعداد تطابق های مورد نیاز استفاده می شوند. آنها را می توان به چهار روش ممکن مشخص کرد:
جدول 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 ~]$ echo "(555) 123-4567" | grep -E '^\(?[0-9]{3}\)؟ [0- 9]{3}-[0-9]{4}$'
(555) 123-4567
[me@linuxbox ~]$ echo "555 123-4567" | grep -E '^\(?[0-9]{3}\)؟ [0-9]
{3}-[0-9]{4}$'
555 123-4567
[me@linuxbox ~]$ echo "5555 123-4567" | grep -E '^\(?[0-9]{3}\)؟ [0-9
]{3}-[0-9]{4}$'
[me@linuxbox ~]$
[me@linuxbox ~]$ echo "(555) 123-4567" | grep -E '^\(?[0-9]{3}\)؟ [0- 9]{3}-[0-9]{4}$'
(555) 123-4567
[me@linuxbox ~]$ echo "555 123-4567" | grep -E '^\(?[0-9]{3}\)؟ [0-9]
{3}-[0-9]{4}$'
555 123-4567
[me@linuxbox ~]$ echo "5555 123-4567" | grep -E '^\(?[0-9]{3}\)؟ [0-9
]{3}-[0-9]{4}$'
[me@linuxbox ~]$
همانطور که می بینیم، عبارت اصلاح شده ما می تواند با موفقیت اعداد را هم با پرانتز و هم بدون پرانتز تأیید کند، در حالی که اعدادی را که به درستی قالب بندی نشده اند رد می کند.