Regex Quantifiers
📖توضیحات درس
📄جزوه
مفاهیم کلیدی
-
Quantifier در دنیای Regular Expressions، ابزاری است که مشخص میکند یک کاراکتر یا یک گروه از کاراکترها دقیقاً چند بار باید در متن تکرار شوند تا الگو مطابقت (Match) پیدا کند.
-
Asterisk (*) کوانتیفایری که به معنای «صفر یا بیشتر» (Zero or More) است. این علامت کاراکتر قبل از خود را به حالتی تبدیل میکند که میتواند اصلاً وجود نداشته باشد یا به تعداد نامحدود تکرار شود.
-
Plus (+) کوانتیفایری به معنای «یک یا بیشتر» (One or More). برخلاف ستاره، این علامت کاراکتر قبل از خود را اجباری میکند؛ یعنی حداقل باید یک بار تکرار شده باشد تا الگو مچ شود.
-
Question Mark (?) کوانتیفایری به معنای «صفر یا یک» (Zero or One). این علامت برای اختیاری کردن (Optional) یک کاراکتر به کار میرود؛ یعنی آن کاراکتر یا نباید باشد یا اگر هست فقط باید یک بار تکرار شده باشد.
-
Curly Braces ({ }) ساختاری برای تعیین تعداد دقیق تکرار یا یک بازه (Range) مشخص از تکرارها. این ابزار دقت بالایی در کنترل تعداد دفعات تکرار در الگوها فراهم میکند.
موارد مصاحبه ای
-
تفاوت اصلی بین
*و+چیست؟ کوانتیفایر*اجازه میدهد که کاراکتر مورد نظر صفر بار تکرار شود (یعنی نباشد)، در حالی که+حداقل یک بار حضور کاراکتر را الزامی میداند. -
چگونه میتوان از
?برای مدیریت پروتکلهای وب استفاده کرد؟ برای مچ کردن همزمانhttpوhttpsمیتوان از الگویhttps?استفاده کرد. در اینجا?باعث میشود حرفsاختیاری باشد؛ یعنی چه باشد و چه نباشد، الگو مچ میشود. -
کاربرد
{n}در اعتبارسنجی دادهها (Data Validation) چیست؟ زمانی که نیاز به تعداد دقیق کاراکتر داریم، مثلاً برای پیدا کردن سالهای چهار رقمی، از\d{4}استفاده میکنیم. این الگو دقیقاً گروههای چهار تایی از اعداد را پیدا میکند و اعداد با تعداد ارقام کمتر یا بیشتر را نادیده میگیرد. -
بازه
{min, max}چگونه عمل میکند؟ این ساختار سه حالت دارد:{n}برای تعداد دقیق،{n,}برای حداقلnبار و بدون سقف، و{n, m}برای حداقلnو حداکثرmبار تکرار.
سناریو کاربردی
سناریوی اول: مدیریت فاصلههای خالی (Whitespace)
فرض کنید میخواهید عبارت Hello World را در متنی پیدا کنید، اما ممکن است کاربر بین این دو کلمه هیچ فاصلهای نگذاشته باشد، یا یک فاصله، یا چندین فاصله و حتی اینتر (Newline) زده باشد.
- با استفاده از الگوی
Hello\s*Worldشما میتوانید تمام این حالتها را پوشش دهید.\s*میگوید: «هر تعداد فاصله (صفر تا بینهایت) که بین این دو کلمه بود، مچ شود.»
سناریوی دوم: استخراج سال از متن در یک متن شلوغ که شامل اعداد مختلف (مانند قیمت، کد کالا و سال) است، برای پیدا کردن سالهای میلادی که ۴ رقمی هستند:
- از الگوی
\d{4}استفاده میشود. این الگو در میان تمام اعداد، فقط آنهایی را انتخاب میکند که دقیقاً ۴ رقم در کنار هم هستند (مانند ۲۰۲۵ یا ۱۹۹۱).
بیشتر بدانید
-
نکته کاربردی: استفاده از کاما در کرلی براکت در داخل
{ }اگر بنویسید{2,}یعنی حداقل ۲ بار تکرار و حداکثر بینهایت. اما اگر بنویسید{ ,4}یعنی حداکثر ۴ بار و حداقل میتواند صفر باشد (اختیاری). -
ترکیب با کاراکتر کلاسها کوانتیفایرها معمولاً با کاراکتر کلاسهایی مثل
\d(اعداد)،\w(حروف و اعداد) و\s(فضاها) ترکیب میشوند تا الگوهای قدرتمندی برای جستجو در متنهای پیچیده بسازند. -
ترتیب اجرا توجه داشته باشید که کوانتیفایرها همیشه روی «دقیقاً یک کاراکتر یا گروه قبل از خودشان» اثر میگذارند. برای اثرگذاری روی چندین کاراکتر، باید از گروهبندی (Grouping) استفاده کنید.
