PDA

View Full Version : سوال: جستجو با rigex



milade
سه شنبه 08 مرداد 1387, 06:41 صبح
سلام
من یه textbox دارم حالا می خوام تمامی حروف(مثلا سلام)رو پیدا کنم چه طور این کار رو کنم یا بهتر بگم چه طور با regix جستجو کنم(اگه میشه vb )
ممنون
بای

Behrouz_Rad
سه شنبه 08 مرداد 1387, 11:48 صبح
RegEx برای کاری که قصد داری انجام بدی مناسب نیست.
از RegEx باید فقط برای جستجوهای داینامیک استفاده کنی نه استاتیک.
"سلام" یک عبارت استاتیک هست. در تمامی زبان های برنامه نویسی توابعی برای پیدا کردن یک عبارت خاص در یک رشته وجود داره. به عنوان مثال در دات نت می تونی از متد IndexOf کلاس String استفاده کنی.

موفق باشید.

SalarSoft
سه شنبه 08 مرداد 1387, 12:09 عصر
\w+ برای تمامی کلمات
و سلام خالی هم برای اینکه خودشو پیدا کنی


dim ex as new Regex(@"سلام")
dim matches as MatchCollection =ex.Matches("متن کامل سلام")


http://www.regular-expressions.info/

milade
چهارشنبه 09 مرداد 1387, 06:01 صبح
سلام
اقای راد اگه توجه می کردید من گفتم مثلا
از اقای salarsoft هم تشکر می کنم یه سوال داشتم حالا اگه بخوایم مثلا تمام اوناییکه <b><b/>دارند رو پیدا کنیم چه کنیم(من یه متد کلی برای این کار می خوام که هر چیزی دینامیکی رو بشه پیدا کرد)
البته می دونم که تابع regex اون ها به هم فرق دارند ولی می خواستم ببینم که برای همه جستجوها از این استفاده میشه(اینی که salarsoft داده؟؟؟؟؟؟؟)
ممنون
بای

Behrouz_Rad
چهارشنبه 09 مرداد 1387, 06:42 صبح
RegEx یک تکنولوژی بسیار حساسه. بنابراین وقتی در موردش صحبت می کنی، بسیار باید با دقت کلمات و عبارات رو به کار ببری. وقتی میگی مثلا "سلام"، این واژه در نظر من یک واژه ی استاتیک هست. اگر بگی "سلام" و بعدش هر چی باشه، داری در مورد یک عبارت داینامیک صحبت می کنی.
به این شکل به جایی نمی رسی. تا زمانی که در موردش مطالعه نداشته باشی، هر چقدر که پاسخ سوالتت رو بگیری و RegEx های مختلفی بهت داده بشه، باز هم میری سر نقطه ی اول!
نمیشه برای پیدا کردن "هر الگوی داینامیک" یک عبارت با قاعده ی کلی ارائه داد.
از اون کدی که SalarSoft ارائه داده می تونی برای بازیابی تمامی مقادیر تطبیق شده با الگوی هر عبارت با قاعده ای استفاده کنی.
RegEx یک مکانیزم زمان بر است. چون باید تمامی حالات مورد نظر در رشته بررسی بشه، بنابراین برای یک عبارت استاتیک به هیچ وجه مناسب نیست.

موفق باشید.

milade
چهارشنبه 09 مرداد 1387, 07:06 صبح
من بعضی از الگوهاش رو بلدم مثلا(d/ برای عدده w/ برای حرفه و...)
اما می خوام بدونم که چه طور با regex جستجو کنم؟
مثلا ایا کلاس regex فقط برای regex هست یا نه کلاس های دیگه ای هم هستند
ممنون
بای

Behrouz_Rad
چهارشنبه 09 مرداد 1387, 07:59 صبح
جواب سوالاتت همگی در MSDN هستند. بخش RegEx رو مطالعه کن. اگر متوجه قسمتی نشدی سوالت رو در اینجا مطرح کن.

موفق باشید.

milade
جمعه 11 مرداد 1387, 06:46 صبح
ببخشید این علامات یعنی چی؟
-(منفی)
#
$
RegexOptions.IgnoreCase Or RegexOptions.ExplicitCapture
ممنون

SalarSoft
جمعه 11 مرداد 1387, 10:13 صبح
-(منفی) در حالت عادی معنایی نداره و به عنوان کاراکتر عادی در نظر گرفته می شه. در character Set ها هم استفاده می شه و به معنی تا است. [a-z] یا [9-0]

# برای درج توضیحات استفاده میشه. عبارات بعد از این علامت به عنوان توضیح خواهند بود
$ در جایگزین سازی مورد استفادست و همچنین در بررسی چند خطی آخر یک رشته یا یک خط رو نشان می ده

برای مثال اگر الگوی شما ([0-9]) باشد و رشته جایگزین می تونه My number is $1 باشه که به جای 1$ گروه شماره 1 که همون داخل پرانتز هست قرار می گیره

RegexOptions.IgnoreCase حساسیت به حروف بزرگ و کوجک رو از بین میبره
RegexOptions.ExplicitCapture فقط زمانی انتخاب انجام میشه که متن مورد نظر در یکی از گرو های الگوی ما (گروه ها همیشه داخل پرانتز معرفی می شوند) قرار داشته باشه. و سایر موارد یافت شده نادیده گرفته شوند.