Farzad Afi Logo

FarzadAfi

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

Regex Groupings

📖توضیحات درس

🎥 این ویدیو قسمت پنجاه و ششم از بوت‌کمپ رایگان جاواست. 📚 Regex – گروه‌بندی در عبارات باقاعده (Grouping in Regex) در این جلسه وارد یکی از بخش‌های مهم و کاربردی در Regular Expressions می‌شویم: مفهوم Grouping. گروه‌بندی در Regex به ما کمک می‌کند الگوهای پیچیده‌تر را به شکل دقیق‌تری تعریف کنیم، بین چند حالت مختلف انتخاب داشته باشیم و حتی بخش‌هایی از متن را استخراج کنیم. در این ویدیو بررسی می‌کنیم: - معرفی مفهوم Grouping در Regex - آشنایی با Character Class ([]) و نحوه استفاده از آن در الگوها - استفاده از Negated Character ([^]) برای استثنا کردن کاراکترها - مفهوم Alternation (|) برای انتخاب بین چند الگوی مختلف - کار با Capturing Group (()) و کاربرد آن در استخراج بخش‌هایی از متن - مرور نهایی برای تثبیت نکات کلیدی 💬 گروه پرسش و پاسخ تلگرام: @programmingByFarzadAfi 💬 گروه پرسش و پاسخ بله: @programming_by_farzadafi اگر سوالی داشتی، می‌تونی در گروه بپرسی؛ من یا مربی‌های گروه پاسخگو هستیم 💬 🎯 بوت‌کمپ رایگان جاوا – آموزش پروژه‌محور برای یادگیری عمیق و ورود به بازار کار.
00:16:00🎯رایگان

📄جزوه

مفاهیم کلیدی

  • Grouping مکانیزمی در ریجکس که به ما اجازه می‌دهد به جای جستجوی کاراکترهای تصادفی، الگوهایی را برای مطابقت با مجموعه‌ای از کاراکترها یا ساختارهای خاص تعریف کنیم.

  • Character Class مجموعه‌ای از کاراکترها که داخل براکت [] قرار می‌گیرند. این ساختار به ریجکس می‌گوید که هر یک از کاراکترهای داخل براکت می‌تواند با متن مطابقت داشته باشد (عملکردی شبیه به "یا" بین تک کاراکترها).

  • Negated Character Class با قرار دادن علامت ^ بلافاصله بعد از باز شدن براکت (به صورت [^...])، ریجکس هر کاراکتری را که در آن مجموعه نباشد پیدا می‌کند. این برعکس حالت معمولی Character Class عمل می‌کند.

  • Alternation استفاده از علامت پایپ | برای ایجاد شرط "یا" بین چندین عبارت یا کلمه کامل. این ابزار اجازه می‌دهد که اگر هر یک از عبارت‌های سمت چپ یا راست مطابقت داشت، به عنوان نتیجه انتخاب شود.

  • Capturing Group استفاده از پرانتز () برای گروه‌بندی بخشی از الگو. هدف اصلی آن علاوه بر گروه‌بندی، استخراج و ذخیره‌سازی آن بخش از متن برای استفاده‌های بعدی در زبان‌های برنامه‌نویسی است.


موارد مصاحبه ای

  • تفاوت جستجوی معمولی با استفاده از Character Class در چیست؟ اگر عبارت aeiou را بدون براکت جستجو کنید، ریجکس دقیقاً به دنبال همین کلمه می‌گردد. اما اگر از [aeiou] استفاده کنید، هر کدام از این حروف به تنهایی در هر جای متن پیدا شوند، یک Match محسوب می‌شوند.

  • آیا \d با [1-9] تفاوتی دارد؟ در اکثر موتورهای ریجکس، این دو معادل هم هستند. \d یک راه میان‌بر برای نوشتن تمام اعداد از ۰ تا ۹ است. اما مزیت [] این است که می‌توانید بازه‌های خاصی مثل [1-5] را تعریف کنید.

  • کاربرد اصلی Capturing Group در برنامه‌نویسی چیست؟ برخلاف Character Class که فقط برای پیدا کردن کاراکتر است، Capturing Group (با پرانتز) اجازه می‌دهد بخش خاصی از متن (مثلاً پیشوند یک نام یا بخشی از شماره تلفن) را در حافظه ذخیره کرده و در زبان‌هایی مثل Python یا JavaScript آن را بیرون بکشید و پردازش کنید.

  • رعملکرد علامت ^ در داخل و خارج از براکت چه تفاوتی دارد؟ اگر ^ در ابتدای یک Character Class بیاید (مثل [^abc])، به معنای نفی (Negation) است و هر چیزی غیر از آن کاراکترها را مچ می‌کند. (نکته: کاربرد آن در خارج از براکت برای نشان دادن ابتدای خط است که در این درس بررسی نشد).


سناریو کاربردی

سناریوی اول: پیدا کردن حروف صدادار برای پیدا کردن تمام حروف صدادار انگلیسی در یک متن، از الگو [aeiou] استفاده می‌کنیم. اگر بخواهیم تمام کاراکترهایی که صدادار نیستند (شامل حروف بی‌صدا، اعداد و فضاها) را پیدا کنیم، از الگوی منفی [^aeiou] استفاده می‌شود.

سناریوی دوم: انتخاب بین چندین گزینه (OR) فرض کنید در یک متن می‌خواهید کلمات apple ، orange و banana را پیدا کنید. به جای نوشتن سه الگوی مجزا، می‌توانید از apple|orange|banana استفاده کنید. ریجکس متن را پیمایش کرده و هر جا به یکی از این سه کلمه برسد، آن را هایلایت می‌کند.

سناریوی سوم: استفاده از گروه‌بندی برای استخراج اگر بخواهیم عبارت Mr را در متن پیدا کنیم و آن را به عنوان یک واحد مجزا برای پردازش‌های بعدی ذخیره کنیم، آن را داخل پرانتز به صورت (Mr) می‌نویسیم. در ابزارهایی مثل Regex101، این بخش معمولاً با رنگ متفاوتی (مثلاً سبز) نشان داده می‌شود که نشان‌دهنده تشکیل یک Group است.


بیشتر بدانید

  • نکته تایپی برای تایپ علامت پایپ | در اکثر کیبوردها می‌توانید از ترکیب کلیدهای Shift + \ (بک‌اسلش) استفاده کنید.

  • نکته ابزار Regex101 در سایت Regex101، زمانی که از پرانتز استفاده می‌کنید، سیستم علاوه بر نمایش Matchهای کلی، لیست گروه‌های استخراج شده (Group 1, Group 2, etc.) را به همراه بازه دقیق قرارگیری آن‌ها در متن به شما نمایش می‌دهد.

  • ترکیب محدودیت‌ها در بازه عددی شما می‌توانید در Character Class از ترکیب اعداد و حروف استفاده کنید یا بازه‌های خاصی تعریف کنید؛ مثلاً [a-zA-Z0-9] تمام حروف کوچک، بزرگ و اعداد را پوشش می‌دهد.