پرش به محتوا
آموزش و مهارتآموزشی

عبارات باقاعده (Regex) به زبان ساده؛ راهنمای عملی با مثال واقعی

اامیر رضایی۲۶ مهر ۱۴۰۵۵ دقیقه مطالعه۳۴۰ بازدید
عبارات باقاعده (Regex) به زبان ساده؛ راهنمای عملی با مثال واقعی

عبارات باقاعده چیست و کجا به کار می‌آید؟ آموزش Regex با مثال‌های واقعی؛ از اعتبارسنجی شماره موبایل تا جست‌وجوی پیشرفته در کد و لاگ.

عبارات باقاعده چیست و کجا به کار می‌آید؟

عبارات باقاعده (Regular Expression) که بیشتر با نام کوتاهش Regex می‌شناسند، زبانی کوچک برای توصیف الگو در متن است. به‌جای اینکه بگویید «دنبال این کلمهٔ مشخص بگرد»، می‌گویید «دنبال هر رشته‌ای بگرد که با ۰۹ شروع می‌شود و دقیقاً ده رقم دارد». همین تغییر نگاه، Regex را از یک موضوع ترسناک به میان‌بُری واقعی برای کارهای تکراری تبدیل می‌کند؛ چیزی که با کمی تمرین، به قابلیتی پرفروش در رزومهٔ هر برنامه‌نویس تبدیل می‌شود.

این زبان کوچک همه‌جا حاضر است: در جست‌وجوی ادیتور، در اعتبارسنجی فرم‌ها، در فیلترکردن لاگ سرور، در دستکاری داده‌ها با اسکریپت و حتی در دستورات ترمینال مثل grep. هر برنامه‌نویسی بالاخره روزی به صفحه‌ای می‌رسد که بدون Regex باید ساعت‌ها پیدا و جایگزین‌کردن دستی انجام دهد؛ دانستن چند الگوی پایه، همان ساعت‌ها را به چند ثانیه تبدیل می‌کند.

الفبای Regex در ده دقیقه

Regex بر چند نشانهٔ ساده بنا شده و همین چند نشانه، بیشترِ نیاز روزمره را پوشش می‌دهد:

  • متن ساده: هر کلمه‌ای بنویسید همان را پیدا می‌کند؛ الگوی error همهٔ errorهای لاگ را می‌گیرد.
  • نقطه (.): جای هر کاراکتری می‌نشیند؛ ca. هم cat را می‌گیرد هم car را.
  • کلاس‌های آماده: \d یعنی یک رقم، \w یعنی یک حرف یا رقم یا زیرخط، \s یعنی یک فاصله.
  • ستاره و به‌علاوه: * یعنی «صفر بار یا بیشتر» و + یعنی «یک بار یا بیشتر» تکرارِ علامت قبلی.
  • براکت [ ]: مجموعه‌ای از گزینه‌ها؛ [۰-۹] یعنی هر رقم فارسی و [a-f] یعنی حروف بین a تا f.
  • علامت پرسش (?): یعنی اختیایی‌بودن؛ الگوی colou?r هم color را می‌گیرد هم colour را.

دو نشانهٔ لنگر هم حیاتی‌اند: ^ ابتدای رشته و $ انتهای رشته را قفل می‌کند. الگوی ^09\d{9}$ را بخوانید: «دقیقاً از ۰۹ شروع شو، بعد دقیقاً نه رقم بیا، بعد تمام شو». آکولاد {9} یعنی نه تکرار. همین یک خط کوتاه، منطق کامل اعتبارسنجی شماره موبایل ایرانی است.

سه کاربرد واقعی که همین امروز می‌توانید بنویسید

کاربرد اول، اعتبارسنجی فرم‌هاست؛ ایمیل، شماره موبایل و کد پستی را می‌شود با الگوهای یک‌خطی چک کرد. نکتهٔ مهم برای کاربران فارسی این است که ارقام فارسی را اول به لاتین تبدیل کنید و بعد الگو را اجرا کنید، وگرنه الگوی شما با ۰۹۱۲ فارسی شکست می‌خورد:

js
const toEn = s => s.replace(/[۰-۹]/g, d => '۰۱۲۳۴۵۶۷۸۹'.indexOf(d));
const isPhone = /^09\d{9}$/.test(toEn(input));

کاربرد دوم، پاک‌سازی داده است. فرض کنید فهرستی از شماره‌ها دارید که بعضی با ۰۰۹۸ شروع شده‌اند، بعضی با +۹۸ و بعضی با ۰؛ با یک الگو و یک جایگزینی می‌توانید همه را به قالب واحد ۰۹… برسانید. کاربرد سوم، جست‌وجوی هدفمند در کد و لاگ است؛ مثلاً در هزار خط لاگ، فقط خطوطی که کد وضعیت ۴xx دارند با الگوی status: 4\d\d بیرون کشیده می‌شوند. همین سه کاربرد، Regex را از «موضوع دانشگاهی» به ابزار روزمرهٔ شما تبدیل می‌کند.

اشتباهات رایج و راه دوری از آن‌ها

  • طمع‌کاری (Greedy): الگوی .* بیشترین مقدار ممکن را می‌گیرد و نتیجهٔ غیرمنتظره می‌سازد؛ در جای مناسب، از الگوی محدودتر مثل «هر چیزی به‌جز فاصله» یعنی [^ ]* استفاده کنید.
  • فراموش‌کردن لنگرها: بدون ^ و $، الگوی شماره موبایل رشته‌های یازده‌رقمی را هم قبول می‌کند، چون الگو «درونِ» آن پیدا شده است.
  • پارس‌کردن HTML با Regex: HTML ساختاری تودرتو دارد و Regex ابزار درست آن نیست؛ برای این کار پارسر مخصوص وجود دارد.
  • تست‌نکردن با دادهٔ واقعی: الگویی که با سه نمونهٔ تمیز کار می‌کند، با دادهٔ واقعی کاربر (فاصلهٔ اضافه، ارقام فارسی، خط تیره) می‌شکند.
  • الگوهای چندصفحه‌ای ناخوانا: اگر الگو از یک خط بلندتر شد، آن را به قطعات کوچک‌تر بشکنید و هر قطعه را جداگانه تست کنید.

خودتان را با این اشتباهات تنبیه نکنید؛ همهٔ برنامه‌نویسان با آن‌ها شروع کرده‌اند. قاعدهٔ ساده این است: اول کوچک‌ترین الگوی ممکن را بنویسید، بعد قدم‌به‌قدم آن را دقیق‌تر کنید و هر قدم را با دادهٔ واقعی بسنجید.

ابزار تمرین: از regex101 تا جست‌وجوی ادیتور

بهترین ابزار برای یادگیری، سایت regex101 است: الگو را می‌نویسید، متن آزمایشی را می‌چسبانید و همان لحظه توضیح هر بخش الگو و هایلایت تطبیق‌ها را می‌بینید. پنل سمت راست همین سایت، به‌مرور به معلم شما تبدیل می‌شود چون نشان می‌دهد هر گروه از الگو دقیقاً چه بخشی از متن را گرفته است. تازه‌کارها با همین یک ابزار نصف راه را می‌روند.

قدم دوم، بردن Regex به محیط واقعی است. در VS Code با Ctrl+F و فعال‌کردن آیکون .* می‌توانید در کل پروژه جست‌وجوی الگویی بزنید و جایگزینی گروهی انجام دهید؛ مثلاً همهٔ console.logهای قدیمی را یک‌جا پیدا کنید. در ترمینال هم دستور grep با فلگ -E همین قدرت را روی فایل‌های واقعی می‌دهد. اگر با پایگاه داده کار می‌کنید، آموزش SQL از صفر را بخوانید تا ببینید LIKE و توابع Regex دیتابیس دقیقاً کجا به کار می‌آیند، و برای تمرین روی داده‌های خام واقعی، فهرست APIهای رایگان عمومی منبع بی‌نظیری است.

روش یادگیری بدون حفظ‌کردن جدول‌ها

جدول نشانه‌ها را حفظ نکنید؛ حتی برنامه‌نویسان باتجربه هم چیت‌شیت کنار دست دارند. روش درست این است: هر وقت به کاری تکراریِ متنی برخوردید، مکث کنید و بپرسید «آیا این الگو دارد؟». اگر جواب بله بود، همان یک الگو را بنویسید، تست کنید و در فایل یادداشت‌های شخصی‌تان با یک مثال ذخیره کنید. سه ماه با این روش، ده‌ها الگوی واقعاً کاربردی جمع می‌شود که از هر دورهٔ تصویری بیشتر می‌ارزد.

یک تمرین کوچک هم پیشنهاد می‌کنم: هفته‌ای یک متن واقعی (یک فایل لاگ، یک خروجی CSV، یک متن طولانی) بردارید و سه الگو برای استخراج اطلاعاتش بنویسید. Regex عضله‌ای است که فقط با تمرین منظم پرورش می‌یابد و مثل هر مهارت برنامه‌نویسی، یادگیری با پروژهٔ واقعی سریع‌ترین راه تثبیت آن است. از امروز شروع کنید؛ اولین الگوی واقعی‌تان را همین امشب بنویسید.

ا
امیر رضایینویسنده حوزه کسب‌وکار و مهاجرت
مقالات نویسنده

این مطلب برایتان مفید بود؟

با پسندیدن، به ما کمک می‌کنید مطالب بهتری منتشر کنیم.

مطالب مرتبط

دو طرف میز مذاکره با برگهٔ پیشنهاد شغلی و ماشین‌حساب روی میز؛ نماد مذاکره حقوق و پیشنهاد شغلی
آموزش و مهارت

مذاکره حقوق در مصاحبه و پیشنهاد شغلی؛ بدون ریسک‌کردن فرصت

بیشتر ما اولین عددی که می‌شنویم را می‌پذیریم — و همان تفاوتِ سالانه را هر سال از دست می‌دهیم. این راهنمای مذاکره حقوق برای بازار ایران و دورکاری است: تحقیقِ عدد درست، زمان‌بندیِ اعلامش در مصاحبه، جمله‌های آماده و واکنش درست به پیشنهادِ کم.

تحریریه امروزینو
۱۴۰۵/۰۸/۰۱۵ دقیقه
فلش‌کارت‌ها و تقویم مرور فاصله‌دار با فواصل ۱، ۳، ۷، ۱۴ و ۳۰ روز
آموزش و مهارت

راه‌اندازی سیستم مرور فاصله‌دار؛ از ساخت فلش‌کارت تا کار با Anki

نظریه را بلدید اما سیستم ندارید؟ راهنمای عملی راه‌اندازی مرور فاصله‌دار: چه چیزی ارزش فلش‌کارت‌شدن دارد، شش قاعدهٔ کارت خوب، جدول ۱-۳-۷-۱۴-۳۰ و روتین نگهداری روزی ۱۵ دقیقه.

تحریریه امروزینو
۱۴۰۵/۰۸/۰۱۵ دقیقه
مقایسهٔ دو حالت مطالعه؛ تماشای منفعل ویدیو در برابر یادداشت‌برداری فعال
آموزش و مهارت

یادگیری فعال و منفعل؛ تفاوت واقعی و راه تبدیل مطالعهٔ منفعل به فعال

چرا سه ساعت تماشای ویدیو هیچ مهارتی نمی‌سازد؟ تفاوت واقعی یادگیری فعال و منفعل، توهم روانی‌بودن، پنج تکنیک عملی تبدیل و نسبت طلایی ۳۰ به ۷۰ در روتین هفتگی.

تحریریه امروزینو
۱۴۰۵/۰۸/۰۱۵ دقیقه
طرح اولیهٔ یک پروژه روی میز کار؛ ساختن به‌جای فقط تماشای دوره
آموزش و مهارت

یادگیری با پروژه؛ از جمع‌کردن دوره‌ها تا ساختن مهارت واقعی

چرا دوره‌دیدن به‌تنهایی مهارت نمی‌سازد و چطور یادگیری را دور یک پروژهٔ واقعی بچینیم؟ نردبان انتخاب پروژه، چرخهٔ ساخت و یادگیری ۷۰/۳۰، دو مثال واقعی و مسیر رسیدن به نمونه‌کار.

تحریریه امروزینو
۱۴۰۵/۰۸/۰۱۶ دقیقه