آموزش عبارت های منظم (Regex)

دسته بندی: مباحث عمومی

آموزش عبارت های منظم

آنچه در این صفحه می خوانید:

عبارت های منظم (Regex) چیست؟

یک عبارت منظم، regex یا regexp (گاهی اوقات یک عبارت منطقی خوانده می شود) دنباله ای از شخصیت هایی است که الگوی جستجو را تعریف می کنند. معمولاً چنین الگویی با الگوریتم های جستجوی رشته برای عملیات "find" یا "find and جایگزین" روی رشته ها یا برای اعتبار سنجی ورودی استفاده می شود. این تکنیکی است که در علوم نظری رایانه و نظریه زبان رسمی توسعه یافته است.

این مفهوم در دهه 1950 پدید آمد که ریاضیدان آمریکایی استفن کول کلین توضیحات یک زبان معمولی را رسماً رسمیت داد. این مفهوم با استفاده از ابزارهای پردازش متن یونیکس متداول شد. نحوهای مختلفی برای نوشتن عبارات منظم از دهه 1980 وجود داشته است که یکی از آنها استاندارد POSIX و دیگری با استفاده گسترده از آن، نحو Perl است.

عبارات منظم در موتورهای جستجو مورد استفاده قرار می گیرند، دیالوگ های پردازشگرها و ویرایشگرهای متن، در ابزارهای پردازش متن مانند sed و AWK و در تحلیل واژگانی را جستجو و جایگزین می کنند. بسیاری از زبان های برنامه نویسی قابلیت های regex را چه در داخل کتابخانه و چه از طریق کتابخانه ارائه می دهند.

regular expression به اختصار regex با معنای عبارت باقاعده، یک رشته از متن است که به شما امکان می دهد الگوهایی را ایجاد کنید که به آنها کمک بتوانید تا متناسب با تطابق، جایگذاری و مدیریت متن را انجام دهید. اگر با متن سروکار و نیاز به تجزیه مقدار زیادی از داده ها را دارید، تسلط بر عبارت باقاعده می تواند در زمان صرفه جویی کند. عبارت باقاعده متشکل از حروف و علامت‌های است که برای جستجو و مقایسه‌ی رشته‌ها کاربرد دارد. حدودا همه ی زبان های برنامه نویسی از  regex  پشتیبانی می کنند و استفاده از آن ها می‌تواند حجم کدنویسی را تا حدودی کاهش دهد. از عبارت با قاعده به منظور جستجوی عبارات در متن و جستجو و جایگزاری عبارت در متن بهره می گیریم.

کاربرد عبارت های منظم (Regex)

دنباله ای از نمادها و کاراکترهایی که رشته یا الگویی را برای جستجو در یک متن طولانی تر جستجو می کنند. یک عبارت منظم یک الگوی متنی است که از ترکیبی از شخصیت های الفبایی و کاراکترهای خاص معروف به metacharakter تشکیل شده است. در حقیقت یك نزدیك در حقیقت عبارت wildcard است كه اغلب در مدیریت پرونده استفاده می شود. این الگوی برای مطابقت با رشته های متن استفاده می شود. نتیجه یک مسابقه موفقیت آمیز است یا خیر، با این حال، اگر یک مسابقه موفقیت آمیز باشد، همه الگوی ها نباید مطابقت داشته باشند، این بعداً در مقاله توضیح داده می شود.

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

اصطلاحات منظم معمولاً معمولاً regexes یا RE نامیده می شوند، اما برای قوام، من با نام کامل آن به آن اشاره خواهم کرد. به دلیل تطبیق پذیری عبارت منظم، از آن در پردازش متن و تجزیه بسیار استفاده می شود. کاربران یونیکس احتمالاً از طریق استفاده از برنامه ها، grep، sed، awk و ed با آنها آشنا هستند. ویرایشگرهای متنی مانند (X) Emacs و vi نیز از آنها به شدت استفاده می کنند. احتمالاً شناخته شده ترین کاربرد عبارات معمولی در زبان برنامه نویسی Perl است. متوجه می شوید که پرل پیشرفته ترین اجرای منظم بیان تا به امروز است.

می توان از عبارات منظم برای انجام انواع جستجوی متن و عملیات جایگزینی متن استفاده کرد.

عبارت های منظم (Regex) در پایتون

یک عبارت منظم دنباله خاصی از شخصیت هاست که با استفاده از یک ترکیب خاص که به صورت یک الگوی برگزار می شود، به شما کمک می کند رشته ها یا مجموعه های رشته دیگری را با یکدیگر هماهنگ کنید یا پیدا کنید. عبارات منظم در دنیای UNIX به طور گسترده ای مورد استفاده قرار می گیرد.

ماژول پایتون از عبارات منظم پرل مانند در پایتون پشتیبانی کامل می کند. اگر خطایی هنگام تدوین یا استفاده از یک عبارت معمولی رخ دهد، ماژول re re.error استثنا را افزایش می دهد. ما دو کارکرد مهم را پوشش می دهیم، که می توانند برای بیان عادی استفاده شوند. اما یک چیز کوچک در ابتدا: شخصیت های مختلفی وجود دارند که وقتی از آنها در بیان معمولی استفاده می شوند معنای ویژه ای دارند. برای جلوگیری از هرگونه سردرگمی هنگام مواجهه با عبارات منظم، از Raw Strings به عنوان r'expression استفاده می کنیم.

پایتون یک بسته داخلی به نام re دارد که می تواند برای کار با Regular Expressions استفاده شود.

وارد کردن ماژول مجدد:

import re

عبارت های منظم (Regex) در سی شارپ

سی شارپ از عبارات منظم از طریق کلاس در فضای نامی System.Text.RegularExpressions در چارچوب استاندارد NET پشتیبانی می کند. در حالی که تفاوتهایی در ویژگیهای پیشرفته پشتیبانی شده از کتابخانه عبارت منظم .NET در مقایسه با PCRE وجود دارد، هر دو بخش عمده ای از نحو را به اشتراک می گذارند و از الگوهای و عبارات می توان در زبانهای C # و سایر زبانها استفاده کرد.

در مثال های زیر، اگر می خواهید کد را وارد کنید، نامهای زیر را در بالای فایل منبع وارد کنید:

 using System.Text.RegularExpressions;

عبارت های منظم (Regex) در جاوااسکریپت

در جاوااسکریپت، یک عبارت معمولی به سادگی نوعی شیء است که برای مطابقت با ترکیب کاراکترها در رشته ها استفاده می شود.

دو روش برای ایجاد یک عبارت منظم وجود دارد:

عبارت منظم Literal - در این روش از slashes (/) برای محصور کردن الگوی Regex استفاده می شود:

var regexLiteral = /cat/;

سازنده عبارت منظم - این روش بیان را برای شما ایجاد می کند:

var regexConstructor = new RegExp("cat");

عبارت های منظم (Regex) در جاوا

عبارات منظم یک "زبان" ویژه برای نشان دادن الگوهای است که می خواهیم با رشته ها مطابقت داشته باشد. در صورت استفاده مناسب، آنها یک ویژگی بسیار قدرتمند جاوا و سایر زبان های برنامه نویسی هستند. با استفاده از API برای بیان مرتب جاوا، ما می توانیم کارهایی مانند موارد زیر را فقط در یک یا دو خط کد انجام دهیم:

  • تطبیق رشته و اعتبار سنجی: تعیین اینکه یک رشته داده شده با الگوی خاصی مطابقت دارد، به عنوان مثال که شماره تلفن یا آدرس پست الکترونیکی به درستی قالب بندی شده است.
  • تطبیق با معیارهای متغیر مانند حساس مورد در مقابل تطابق غیر حساس به مورد؛
  • تطبیق بستر یا جستجوی مواردی از یک بستر خاص در یک رشته بزرگتر.
  • استخراج داده ها: یافتن بسترهای به صورت خودکار با یک قالب خاص از یک رشته معین (به عنوان مثال کد کشور، پیش شماره گیری و شماره تلفن محلی از شماره تلفن کاملاً مشخص) استخراج شود.
  • عملیات را بیابید و جایگزین کنید، از جمله مواردی که رشته جایگزینی بسته به رشته ای که پیدا شده است متفاوت است.

همچنین اجتناب از خطوط گسترده کد، استفاده از عبارت معمولی API برای انجام این کارها همچنین می تواند بهینه سازی کارایی را برای ما به ارمغان بیاورد که احتمالاً در نظر نگرفته ایم اگر بخواهیم کد معادل آن را از ابتدا بنویسیم. همانطور که خواهیم دید، این موجزاری گاهی به قیمت خوانایی حاصل می شود. بنابراین بسیاری از برنامه نویسان با عبارات عادی رابطه عشق و نفرت دارند!

برای نشان دادن مزایا و مضرات استفاده از عبارات منظم، با یک مثال ساده شروع می کنیم.

تطبیق الگوی مثال: متن کد شده در مقابل عبارات معمولی

فرض کنید می خواهید به این سوال پاسخ دهید: آیا یک رشته داده شده شامل یک سری 10 رقمی است؟ می توانید این را کدگذاری کنید: از طریق کاراکترهای رشته تا زمانی که به رقمی ضربه بزنید چرخش کنید. سپس وقتی رقمی پیدا کردید، بررسی کنید که نه شخصیت بعدی رقم هستند. بنابراین در جاوا، کد چیزی شبیه به این است:

public boolean hasTenDigits(String s) {
  int noDigitsInARow = 0;
  for (int len = s.length(), i = 0; i < len; i++) {
    char c = s.charAt(i);
    if (Character.isDigit(c)) {
      if (++noDigitsInARow == 10) {
        return true;
      }
    } else {
      noDigitsInARow = 0;
    }
  }
  return false;
}

آیا این نوشته را دوست داشتید؟
linkedin-learning-regular-expressions

آشنایی با عبارت های منظم


عبارت های منظم یا regexها، می توانند به شما در سرعت بخشیدن به کارهای خسته کننده و ساده تر کردن کار خود کمک کنند. در این دوره، نحوه استفاده از regexes...

1399/01/21 848 بازدید زیرنویس دارد
laracasts-understand-regular-expressions

آشنایی با عبارت های منظم (Regular Expressions)


آیا فکر به عبارت های منظم شما را وحشت زده می کند؟ نگران نباشید؛ شما تنها نیستید. اما، خوشبختانه، واقعیت این است که ترفند درک عبارات منظم، به سادگی باع...

1398/10/13 926 بازدید
pluralsight-using-expressions-in-qlik-sense

آموزش استفاده از Expressions در Qlik Sense


ابتدا با استفاده از عبارات در عناصر نمودار اصلی مانند برچسب، عنوان، زیرنویس و خطوط مرجع بررسی می کنید. سپس با استفاده از متغیرها و مرجع سازی آنها در ع...

1398/10/06 397 بازدید
teamtreehouse-introduction-to-regular-expressions

آشنایی با عبارت های منظم


در این دوره، بررسی می کنیم که عبارات منظم چیست و با استفاده از آنها تمرین می کنیم. عبارات منظم مانند داشتن یک کد مخفی است تابه یک کامپیوتر بگویید که د...

1398/10/02 1054 بازدید
infiniteskills-learning-regular-expressions

یادگیری عبارات باقاعده (Regular Expressions)


در این دوره با ساخت گام به گام عبارات باقاعده برای پیدا کردن، جایگزین کردن و فرمت سریع متن همراه با مثال‌هایی عملی در زبان‌های جاوا، جاوا اسکریپت، C# ...

1398/06/27 1235 بازدید
pluralsight-java-fundamentals-the-regular-expressions-playbook

آموزش اصول جاوا - بررسی عبارت های منظم


با پیشرفت های تکنولوژیکی، موارد مورد استفاده مورد نیاز برای تایید، تجزیه و استخراج متن وجود دارد. یک روش قدیمی ای بود که راه حل در زبان برنامه نویسی ه...

1397/09/13 1605 بازدید
packtpub-2018-python-regular-expressions-real-world-projects-video

آموزش عبارت های منظم در پایتون (2018)


در این دوره با درک درستی در مورد انواع مسائل مربوط به کارایی، کد منبع و اسلایدهای قابل دانلود، ابزار تعاملی، عبارات منظم و غیره آشنا می شوید. عبارت ها...

1397/06/23 1971 بازدید
teamtreehouse-regular-expressions-in-javascript-course

آموزش عبارت های منظم در جاوااسکریپت


عبارت های منظم به شما کمک می کنند تا فرم ها را اعتبارسنجی کنید، جستجو و جایگزینی در رشته ها را انجام دهید و غیره. عبارت های منظم الگوها را در رشته ها ...

1397/04/31 1251 بازدید
teamtreehouse-regular-expressions-in-python-course

آموزش عبارت های منظم در پایتون


عبارت های منظم یکی از ابزارهایی است که هر برنامه نویس نیاز دارد، اما اغلب از آن فرار می کنند. در این دوره با ماژول re که Python آن ارائه می دهد، نوشتن...

1397/04/23 2541 بازدید
1396/10/22 2806 بازدید
آشنایی-با-boost-در-کتابخانه-های-c

آشنایی با Boost در کتابخانه های ++C


Boost چیست؟ Boost مجموعه ای از کتابخانه های ++C است که به برنامه نویسان امکان استفاده از Task ها، ساختار شبیه جبر خطی، چند وظیفه ای (multithreading...

1396/09/21 7376 بازدید
pluralsight-regular-expression-fundamentals

آشنایی با مبانی Regular Expression


عبارت باقاعده (Regular Expressions) از تعدادی نمادهای ثابت و اپراتور تشکیل شده است که مشخص کننده مجموعه ای از این رشته ها وعملگرا ها در این مجموعه است...

1395/04/27 2339 بازدید
آموزش-regular-expressions

آموزش Regular Expressions


عبارت با قاعده یا Regular Expressions کاربرد زیادی در طراحی ربات های تحت وب و تحلیل گرهای داده دارد. به طور مثال رباتی که وارد سایت های مختلف می شود ...

1395/01/15 4323 بازدید
آموزش-regular-expressions-در-دات-نت

آموزش Regular Expressions در دات نت


در این آموزش تصویری با نحوه کار با Regular Expressions در دات نت آشنا می شوید. این دوره آموزشی محصول Pluralsight می باشد. یادگیری Regular Expressi...

1394/12/27 4474 بازدید