* - یک عنصر صفر یا چند بار مطابقت دهید
مانند ? فرا شخصیت، * برای نشان دادن یک آیتم اختیاری استفاده می شود. با این حال، بر خلاف ?، مورد ممکن است چند بار رخ دهد، نه فقط یک بار. فرض کنید میخواستیم ببینیم آیا یک رشته یک جمله است یا خیر. یعنی با یک حرف بزرگ شروع می شود، سپس شامل هر تعداد حروف بزرگ و کوچک و فاصله است و با نقطه پایان می یابد. برای مطابقت با این تعریف (بسیار خام) از یک جمله، می توانیم از یک عبارت منظم مانند این استفاده کنیم:
[[:upper:]][[:upper:][:lower:] ]*\.
عبارت از سه مورد تشکیل شده است: یک عبارت براکتی که حاوی عبارت است [:بالا:] کلاس کاراکتر، یک عبارت براکتی حاوی هر دو [:بالا:] و [:lower:] کلاس های شخصیت و یک فاصله، و یک دوره با یک بک اسلش فرار کرد. عنصر دوم با یک دنبال می شود * متاکاراکتر، به طوری که بعد از حرف بزرگ اصلی در جمله ما، هر تعداد حروف بزرگ و کوچک و فاصله ممکن است از آن پیروی کند و همچنان مطابقت داشته باشد:
[me@linuxbox ~]$ echo "این کار می کند." | grep -E '[[:upper:]][[:upper:][
:lower:] ]*\.'
این کارها.
[me@linuxbox ~]$ پژواک "این کار می کند." | grep -E '[[:upper:]][[:upper:][
:lower:] ]*\.'
این کارها.
[me@linuxbox ~]$ پژواک "این نیست" | grep -E '[[:upper:]][[:upper:
][:lower:] ]*\.'
[me@linuxbox ~]$
[me@linuxbox ~]$ echo "این کار می کند." | grep -E '[[:upper:]][[:upper:][
:lower:] ]*\.'
این کارها.
[me@linuxbox ~]$ پژواک "این کار می کند." | grep -E '[[:upper:]][[:upper:][
:lower:] ]*\.'
این کارها.
[me@linuxbox ~]$ پژواک "این نیست" | grep -E '[[:upper:]][[:upper:
][:lower:] ]*\.'
[me@linuxbox ~]$
این عبارت با دو تست اول مطابقت دارد، اما با تست سوم مطابقت ندارد، زیرا فاقد حروف بزرگ اصلی و دوره انتهایی مورد نیاز است.