عبارات منظم - Regular Experssion

یکشنبه 5 خرداد 1392

عبارات منظم - Regular Experssion <br/> عبارات منظم رشته هایی با فورمتی مشخص هستند . ما از این عبارات برای پیدا کردن الگوهای خاصی در متن مورد نظرمون استفاده می کنیم .

عبارات منظم رشته هایی با فورمتی مشخص هستند . ما از این عبارات برای پیدا کردن الگوهای خاصی در متن مورد نظرمون استفاده می کنیم . به عنوان مثالی بسیار خوب برای عبارات منظم می تونیم برای این که یک کامپایلر موقع کامپایل تشخیص دهد که کد نوشته شده از لحاظ دستوری مشکلی دارد یا خیر از یک عبارت منظم برای این کار استفاده کنیم که البته یک عبارت منظک بزرگ و پیچیده می شود . کار با عبارات منظم بسیار ساده هستش فقط کافیه عملگر هایی که در اون استفاده میشه رو یاد بگیرید و چند تا مثال حل کنید تا در کار با اونها و ساختن یک عبارت منظم برای متن مورد نظرتون مهارت پیدا می کنید . سی شارپ برای ایجاد عبارات منظم از کلاس Regx که مخفف Regular Experssion می باشد استفاده می کنیم که دارای متدهای زیادی برای کار با عبارات منظم می باشد . این کلاس در هدر فایل System.Text قرار دارد و برای استفاده از کلاس عبارات منظم باید در ابتدای برنامه این قایل را با راهنمای using به برنامه خودتون اضافه کنید .عملگر های زیادی هنگام کار با عبارات منظم به کارتون میان که در ادامه باهاشون آشنا می شوید .

\d هر رقم
\w هر کاراکتر الفبایی
\s فاصله خالي
\D هر کاراکتر غیر عددی
\W هر کاراکتر غیر الفبایی

موارد بالا یک سری کاراکتر کنترلی بودند در ادامه با چند عملگر در این مورد آشنا می شود :
* 0 یا چند کاراکتر
+ حداقل یکی یا بیشتر
؟ صفر یا یک کاراکتر
{n} دقیقا n كاراكتر را مچ می کند
{,n} حداقل n كاراكتر را مچ می کند
{m,n} یین m,n كاراكتر را می کند
[] یکی از کاراکتر های داخل براکت
[-] یک بازه ، که هر تعداد عنصر از این بازه مچ می شود
^ وقتی استفاده می شود که بخواهیم یک کاراکتر را نادیده بگیریم

در ادامه چند تا مثال براتون میزارم که بحث کامل بشه

مثال بالا هز چیزی که کاراکتر های بین 0 تا 9 را نداشته باشد مچ می کند مثلا abc مچ می شود ولی 123 مچ نمی شودکد:

هر تعداد از حروف صدا دار را مچ می کند.

 

هر عددی بین 0 تا 3 یا بین 5 تا 9 را مچ می کند .

 


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

در انتها هم یک مثال کامل برای آشنایی با توابع کلاسRegx براتون میزارم .

در خط 18 سازنده کلاس Regex را مشاهده می کنید که یک عبارت منظم به عنوان پارامتر با آن ارسال شده است . در ادامه متغیر رشته ای که تعریف شده است حاوی چند جمله می باشد . اگه به عبارت منظمی ه به عنوان پارامتر به کلاس regex ارسال کردیم توجه کنید بر اساس آنچه که برای عملگرها و عبارات کنترلی مورد استفاده در عبارات منظم در ابتدا توضیح دادم متوجه می شوید که ما دنبال جملاتی هستیم که با j شروع می شوند و در ادامه یک تاریخ تولد آورده شود . از میان چهار جمله ای که در نتغیر رشته ای تعریف شده در مثال وجود دارد دو جمله با عبارت منظم ما مطابقت دارد د آن دو جمله در خروجی چاپ می شوند . در خط 28 با دو مورد احتمالا نا آشنا مواجه می شوید که توضیحی تا حالا ندادم . در داخل خلقه foreach من از کلاسMatch استفاده کردم و همچنین تابع Matches از کلاس Regex .مورد اول کلاسی لست که ما از آن برای نمایش عمل مطابقت مورد استفاده در عبارت منظم استفاده می کنیم ، یعنی مثلا در این مثال هر جمله ای که با الگوی ما تطابق داشته باشد درون شیی از کلاس Match قرار می گیرد و تابع Matches ازکلاس Regex يك آرایه از ازنوع Match بر با نام MatchCollection بر مي گرداند که در حلقه مذکور مورد استفاده قرار می گیرد .

سجاد باقرزاده

نویسنده 54 مقاله در برنامه نویسان
  • C#.net
  • 9k بازدید
  • 3 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید