Farzad Afi Logo

FarzadAfi

آموزش تخصصی برنامه نویسی

Regex Quantifiers

📖توضیحات درس

🎥 این ویدیو قسمت پنجاه و هفتم از بوت‌کمپ رایگان جاوا است. 📚 Regex – آشنایی کامل با Quantifiers در عبارات باقاعده در این جلسه به یکی از مفاهیم کلیدی و بسیار کاربردی در Regular Expressions می‌پردازیم: Quantifiers. Quantifierها به ما اجازه می‌دهند مشخص کنیم یک کاراکتر یا یک گروه از کاراکترها چند بار باید در الگو تکرار شوند؛ قابلیتی که در اعتبارسنجی داده‌ها و تعریف الگوهای دقیق بسیار حیاتی است. در این ویدیو بررسی می‌کنیم: - مفهوم Quantifiers در Regex و نقش آن‌ها در تعریف الگو - علامت * برای تکرار صفر تا بی‌نهایت بار - علامت + برای تکرار حداقل یک بار - علامت ? برای تکرار اختیاری (صفر یا یک بار) - استفاده از آکولادها { } برای تعیین تعداد دقیق تکرار - تعریف بازه‌های تکرار با ساختار {min,max} - مرور نهایی برای درک تفاوت‌ها و کاربرد هر نوع Quantifier 💬 گروه پرسش و پاسخ تلگرام: @programmingByFarzadAfi 💬 گروه پرسش و پاسخ بله: @programming_by_farzadafi اگر سوالی داشتی، می‌تونی در گروه بپرسی؛ من یا مربی‌های گروه پاسخگو هستیم 💬 🎯 بوت‌کمپ رایگان جاوا – آموزش پروژه‌محور برای یادگیری عمیق و ورود به بازار کار.
00:22:02🎯رایگان

📄جزوه

مفاهیم کلیدی

  • 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) استفاده کنید.