۱۳۸۷ اسفند ۲۱, چهارشنبه

Regular Expressions

عبارات منظم (Regular Expressions) وسیله ای را برای برنامه نویسان فراهم می کنند که بتوان به کمک آنها عبارات ، کلمه ها و الگوها ی مورد نظر را در یک رشته متنی (String) پیدا کرد. در اغلب موتور های جستجوی پیشرفته مانند Google یا Live Search از این روش استفاده می کنند و می توانند سرتاسر پایگاه داده را به طور کامل و در کمترین زمان جستجو کنند.




Regular Expressions دارای یک سری سینتکس های مربوط به خود است که به کمک آن می توان تنها با نوشتن یک خط کد، یک رشته ی بزرگ متنی را تحلیل و جستجو کرد در حالی که اگر از روشهای دیگری استفاده می کردیم به احتمال خیلی زیاد از یک خط تجاوز می کرد . و این سادگی و در عین حال کارایی بالای این روش را می رسان.د




Regular Expressions محدود به یک زبان خاص نیست و اکثر زبانهای برنامه نویسی این امکان را درون خود قرار داده اند . عبارات منظم توسط یک پردازنده که درون زبان برنامه نویسی وجود دارد تفسیر(interpret) می شوند .عبارات منظم استفاده های زیادی در برنامه های کاربردی مختلف دارد . توسط بسیاری از ادیتورها (Text Editor) برای انجام اعمال مختلف بر روی رشته ها مورد استفاده قرار می گیرد . همچنین در بعضی از زبانهای برنامه نویسی نیز از موتور Regular Expressions استفاده می شود نظیر Perl, Ruby, TCL.




اصل Regular Expressions بر روی نظریه ماشینها و نظریه زبانهای صوری تکیه دارد که به طور خلاصه به چند مورد اشاره می کنیم:




: این علامت نشان دهنده or است . به عنوان مثال grayوgrey هر دو معنای خاکستری را می دهند. می توان نوشت : graygrey و یا به صورت gr(ae)y








? : این علامت نشان دهنده آن است که کاراکتری که قبل از آن قرار گرفته است می تواند وجود داشته باشد یا نداشته باشد. به عنوان مثال : colou?r متواند به دو صورت "color" و "colour". بیاید.








* : بعد از هر کاراکتری که قرار بگیر آن کاراکتر می تواند از صفر تا بینهایت بار تکرار شود . به عنوان مثال : ab*c را می توان نوشت : "ac", "abc", "abbc", "abbbc"و به همین صورت ادامه خواهد داشت.




+ : بعد از هر کاراکتری قرار گیرید آن کاراکتر حتما باید حداقل یک بار تکرار شود. به عنوان مثال : ab+c به صورت "abc", "abbc", "abbbc" ایجاد می شود . ایجاد "ac". اشتباه خواهد بود .




[] : نشان دهنده یک محدوده است . به عنوان مثال برای نشان دادن تمام حروف انگلیسی می نویسیم : [a-z] یا برای نشان دادن تمام حروف بزرگ و کوچک و اعداد می نویسم : [0-9A-Za-z]




() : برای گروه بندی استفاده می شودو به همین ترتیب .جدول زیر نمونه ای از سینتکس های Regular Expressions می باشد .





يك مثال ساده از Regular expression كه چك مي كند آيا رشته ورودي تماما عدد است يا تماما حرف:




10 using System.Text.RegularExpressions;


11 ...


12 const string ALL_NUMERIC_PATTERN = "[a-zA-Z]";


13 static readonly Regex All_Numeric_Regex =


14 new Regex (ALL_NUMERIC_PATTERN);


15 static bool AllNumeric ( string inputString )


16 {


17 if (All_Numeric_Regex.IsMatch ( inputString ))


18 {


19 return false;


20 }


21 return true;



}

۱ نظر: