PDA

View Full Version : کلاس Regex



victor007
چهارشنبه 08 مهر 1388, 16:47 عصر
سلام
میخواستم بدونم این کلاس در کجا استفاده می شود چه کارایی دارد و مقدار بازگشتی ان از چه نوعی میباشد ؟
و هر اطلاعاتی که می توانید در مورد این کلاس بدهید.
ممنون میشوم کمک کنید .

daniel_0247
چهارشنبه 08 مهر 1388, 17:18 عصر
سلام
شما می توانید با استفاده از کلاس Regex از Regular expression ها استفاده کنید . Regular expression ها امکاناتی هست که با آن می توانید داخل یک مقدار رشته ای رو جستجو کنید با استفاده از الگویی که خودتان تعریف می کنید ، همچنین کارهایی دیگر از قبیل Replace ، Format می توانید انجام دهید .
چند مثال از الگو رو می زارم :

Regex objNotNaturalPattern=new Regex("[^0-9]");
خوب! شما در این الگو نمی تونی اعدادی بین 0 تا 9 رو وارد کنی و فقط باید حروف باشد . کد کامل پایین هست .


using System.Text.RegularExpressions;

MessageBox.Show (objNotNaturalPattern.IsMatch("ABC").ToString ());

_________________________
My Blog (http://prohardcoding.blogfa.com/)

alihassanabadi
چهارشنبه 08 مهر 1388, 18:53 عصر
سلام
میخواستم بدونم این کلاس در کجا استفاده می شود چه کارایی دارد و مقدار بازگشتی ان از چه نوعی میباشد ؟
و هر اطلاعاتی که می توانید در مورد این کلاس بدهید.
ممنون میشوم کمک کنید .

regular expression رشته ای با فرمت خاص میباشد که برای پیدا کردن الگوی مشخصی به کار میرود ودر هنگام صحت سنجی اطلاعات مورد استفاده قرار میگیرد تا مطمعن شویم فرمت خاص وجود دارد
مثال فرض کن
که کد پستی باید 5 رقم باشد یا نام خانوادگی باید با حروف بزرگ شروع بشه.
از regular expression در جاهای دیگه نیز استفاده میشه برای مثال برنامه ای از regular expression برای ساخت کامپایلر مورد استفاده قرار میگیره
در مورد دیگه برای کنترل دستورات برنامه نویسی استفاده میشه
در .net چندین کلاس برای تشخیص استفاده از regular expression وجود داره یکی از این کلاس ها کلاس regular در فضای کاری System.Text.RegularExpression میباشد
این کلاس دارای متدهای static هستش که بدون نیاز تعریف شی از این کلاس میتوان از ان متدها استفاده کرد
کلاس match نتیجه عملیات انجام گرفته توسط regular expression را انجام میدهد.
نکته:در هنگام استفاده از regular expression کلاس Match ربا متد Match اشتباه نگیرید
در زیر کلاس های کارکترهایی که توسط regular expression را استفاده میشن رو نشون میدم


\d
هر چیزی به جز ارقام
\w
هر چیزی به جز کارکتر حروف
\s
هر چیزی به جز کاراکتر whitespase
\D
ارقام
\W
کارکتر حروف
\S
کارکتر whitespace

به برنامه زیر توجه کن
این برنامه سال تولد را میگیرد و ان را با regular expression مقایسه میکند


1.string outp;
2. Regex expression = newRegex(@"J.*\d[0-35-9]-\d\d-\d\d");
3. string string1="Jane's Brithday is 05-12-75\n"+
4. "Dave's Brithday is 11-04-68\n"+
5. "John's brithday is 04-28-73\n"+
6. "Joe's Brithday is 12-17-77";
7. foreach (Match mymatch in expression.Matches(string1))
8. outp += mymatch.ToString() + "\n";
9. MessageBox.show(outp);

خط 2 یک نمونه regex را تولید میکند و انرا طبق الگوی خاصی به regular expression نسبت میدهد اولین کارکتر موجود J میباشد بدان معناست که رشته ای میتواند مطا بقت داشته باشد که با j شروع شود
"." بدان معناست که هر کارکتری غیر از خط جدید میتواند در این قسمت قرار گیرد و
"*." بدان معناست که هر ارقامی میتواند قرار گیرد
"d\" نشانگر هر کارکتر عددی میباشد غیر از کارکترهایی که دارای کلاس مشخص میباشند بقیه را میتوان در داخل [] مشخص نمود محدوده کارکتر ها را با - مشخص میکنیم
در خط 7 از حلقه foreach استفاده شده که هر مورد مطابقت شده را با استفاده از expression.Matches بدست می اورد
به این متد یک رشته به عنوان پارامتر ورودی ارسال میشود
اگه برنامه رو تست کنی مشخص میشه که دو مورد با رشته مشخص شده در Regular Expression مطابقت دارند
در مثال بالا اعداد میتوانند بین 0 تا 3 یا بین 5 تا 9 باشند یعنی 4 در محدوده قرار نمیگیرد.
یه مثال کوچولو فرض کن که میخوایم رشته ورودی چهار رقم باشه اینو مینویسیم
\d\d\d\d
یا تکه کد زیر میگه که رشته ورودی حتما باید از اعداد باشه


if (!Regex.Match(txtid.Text, @"^[0-9]").Success)
{

}

با تشکر
______________________________-
سعادت دیگران بخش مهمی از خوشبختی ماست.
دست هایی که کمک میکنند مقدس تر از لب هایی هستند که دعا میکنند.کوروش کبیر

victor007
پنج شنبه 09 مهر 1388, 15:32 عصر
اول از همه تشکر میکنم از کمکتون
فقط میخواستم توضیحات بیشتری در مورد الگو سازی بدهید
قواعد ونوع الگو سازی و ...
و اینکه ایا کلاس regex مقدار بازگشتی دارد ؟

victor007
شنبه 11 مهر 1388, 15:30 عصر
کسی من رو در مورد راهنمایی بیشتر در مورد الگوسازی
برای regular expression کمک نمیکنه ؟

alihassanabadi
شنبه 18 مهر 1388, 18:12 عصر
کسی من رو در مورد راهنمایی بیشتر در مورد الگوسازی
برای regular expression کمک نمیکنه ؟
سلام
دوست عزیز میتونی به سایت زیر مراجعه کنی
البته اگه زبانت(انگلیسی) خوبه
البته با وجود نرم افزار های زیاد میتونی ترجمه کنی.
http://www.regular-expressions.info/

mahdi_7610
شنبه 18 مهر 1388, 18:35 عصر
http://barnamenevis.org/forum/showthread.php?t=157436&highlight=regular+expression

http://barnamenevis.org/forum/showthread.php?t=148010&highlight=regular+expression