دسته Archives: برنامه نویسی

آموزش ریجکس بخش اول:

ریجکس یا عبارات با قاعده

مفهوم عبارات با قاعده

اگر بخواهیم یک تعریف مختصر از عبارات با قاعده یا Regular Expressionsو به اختصار Regex)) داشته باشیم روش ها و قواعدی هستند که برای استخراج یا بررسی وجود قسمت یا توالی خاصی از یک مقدار (عددی، متنی ، الگو و… به کار می روند(، در واقع این قواعد بر مبنای قوانین خاصی تنظیم میشوند و بخش بخصوصی از یک متن یا عدد و… را با توجه به تنظیمات ما استخراج می کنند که در محاسبات دقیق و پیچیده بسیار کاربرد خواهد داشت.نکته: استفاده از عبارات با قاعده معمولا در چارچوب های مشخصی که توانایی پردازش آنها را داشته باشند انجام می شود، به طور مثال در توابع خاص، دستورات htaccess، قسمت جستجوی برنامه هایی که از این قواعد پشتیبانی می کنند و…؛ به عبارت دیگر صرف قرار دادن مستقیم این قواعد در کدنویسی نتیجه خاصی ندارد. عبارات منظم (Regular Expressions) وسیله ای را برای برنامه نویسان فراهم می کنند که بتوان به کمک آنها عبارات ، کلمه ها و الگوها ی مورد نظر را در یک رشته متنی (String) پیدا کرد.
اصل Regular Expressions بر روی نظریه ماشینها و نظریه زبانهای صوری تکیه دارد .
Regular Expressions محدود به یک زبان خاص نیست و اکثر زبانهای برنامه نویسی این امکان را درون خود قرار داده اند نظیر #javascript ,Perl, Ruby, TCL, Delphi, php, c java, و …. عبارات منظم توسط یک پردازنده که درون زبان برنامه نویسی وجود دارد تفسیر (interpret) می شوند.عبارات منظم استفاده های زیادی در برنامه های کاربردی مختلف دارد . توسط بسیاری از ویرایشگرهای متنی (Text Editor)برای انجام اعمال مختلف بر روی رشته ها مورد استفاده قرار می گیرد

عبارات با قاعده چگونه نوشته می شوند؟

پس از آشنایی با مفهوم Regular Expressions، سوالی که به ذهن می رسد این است که عبارات با قاعده چگونه نوشته می شوند؟ در پاسخ باید گفت که دستورات در این روش از طریق توالی علامت ها، کلمات، حروف یا کاراکترهای خاصی (مانند [] () + \ *? | , w \W\ 0-9 a-z و…) که هر کدام مفهوم ویژه ای دارند، تعریف می شوند، در واقع از کنار هم قرار گرفتن این علامت ها، دستور ویژه ای شکل گرفته و قسمت خاصی از رشته مورد نظر استخراج یا بررسی می شود، چند مثال کاربردی:

. :یک کاراکتر بجز \n
+ :حداقل یک تکرار عبارت یا کاراکتر قبل از خود است
* : هر تعداد تکرار یا بدون تکرار عبارت یا کاراکتر قبل از خود است
? : اگر پشت عبارتی قرار بگیرد یعنی اینکه 0 یا 1 تکرار عبارت یا کاراکتر قبل از خود است
^ :ایا متن با الگوی ما شروع میشود اگر داخل [] قرار گیرد به معنی بجز میباشد
$ :ایا متن با الگوی ما پایان می یابد یا پایان یک عبارت
i :ریجکس به حروف بزرگ و کوچک حساس است برای از بین بردن این حساسیت از i استفاده میکنیم
مثال:
“/ABC/i”
\d :یک عدد
\D:یک کاراکتر غیر عددی
\w :یک کاراکتر یا کلمه
\W :یک کاراکتر غیر حرفی
\s :یک اسپیس
\S :یک کاراکتر عیر از اسپیس
\b :ابتدا یا انتهای کلمه
\B :غیر از ابتدا یا انتهای متن
\n :خط جدید
\r :انتهای خط
[] :تعریف الگو برای یک کاراکتر
() :تعریف الگو و جداسازی الگوها
{} :تعداد تکرار
{3}:3 بار تکرار
{1,5}:حداقل 1 و حداکثر 5 بار تکرار
{,8}:حداکثر 8 بار تکرار
:حداقل 4 بار تکرار{4,}
– :تعریف محدوده الگو
\ :غیر فعال کردن کاراکترهای معنی دار در الگو
| :انتخاب یا در الگو