![]() |
|
Regular Expression الجزء الاول - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : الاقسام الاخرى (http://vb4arb.com/vb/forumdisplay.php?fid=74) +--- قسم : قسم المقالات العام (http://vb4arb.com/vb/forumdisplay.php?fid=85) +--- الموضوع : Regular Expression الجزء الاول (/showthread.php?tid=5389) |
Regular Expression الجزء الاول - RaggiTech - 08-10-12 بسم الله الرحمن الرحيم السلام عليكم
Regular Expression
ما هو الـ Regular Expression:هو تقنيه قياسيه للبحث خلال النصوص مدعومه من قبل كثيراً من لغات البرمجه تعتمد على صيغ نصيه تحتوى بعض الحروف الخاصه التى تمتلك معنى خاص. تخل انك تريد البحث عن الايميلات فى ملف نصى او البحث عن عنواين المواقع او حتى البحث عن ارقام تليفونات هنا ياتى دور الـ Regular Expression كحل امثل. دعم الـ Dot Net للـ Regular Expression : ككثيراً من لغات البرمجه يدعم الدوت نت الـ Regular Expression من خلال مجموعه من الفئات توجد فى مجال الاسماء System.Text.RegularExpressions الكائن Regex يستخدم لعمل البحث خلال نص عن صيغه معينه التصريح عن الكائن بالشكل التالى كود : ' Declare object variable of Regex. وبعد ذلك ياتى دور الـ Match الذى يحتوى على النتائج العائده من عملية البحث من الجيد اختبار الخاصيه Match.Success قبل محاولة قراءة النتائج. كود : ' cCreate a new Regex object.فى الحالة السابقه سيمثل الـ Match اول مجموعة حروف تقابله تساوى الصيغه المراد البحث عنها - يعنى اول نتيجة بحث - اما اذا اردنا جلب كل نتائج البحث نستخدم MatchCollection العائده من Regex.Matches كود : Dim mc As MatchCollectionيمكنك الحصول على المذيد من المعلومات من خلال الرابط التالى http://msdn.microsoft.com/en-us/libr...66(VS.71).aspx __________________________________________________ ___________________________ [b]كيفية كتابة الصيغ لـ Regular Expression :[/b] لقد قمت بعمل مثال صغير لتطبيق ما يلى من صيغ المثال عباره عن TextBox لادخال الصيغه المراد البحث عنها TextBox اخر لكتابة النص المراد البحث خلاله و Button لبداء اجراء البحث و ListBox لعرض النتائج يمكنك تحميل المثال من هنا وهذا الكود الذى بالمثال كود : Imports System.Text.RegularExpressionsحيث L هو ListBox لعرض النتائج و T صندوق TextBox لادخال النص المراد البحث خلاله و btnGo مفتاح بداء البحث نبداء الان فى دراسة كيفية كتابة الصيغ صيغة النص الساكن : اذا اردت البحث عن كلمه او جمله او مجموعة رموز يمكنك ببساطه كتابتها كصيغه وهذه الابسط مثال: بعد تشغيل البرنامج المثال السالف الذكر ادخل النص التالى إقتباس :I Can write In visual Basic, visual c++ and visual foxproواكتب فى خانه الصيغه visual واضغط على مفتاح البحث او اضغط مفتاح Enter سوف تجد ثلاث كلمات هى نتائج البحث عن الصيغه "visual" البحث عن اى حرف: نستخدم النقطه "." لتحل محل اى حرف او رمز مثال ذلك اكتب فى النص المراد البحث خلاله I Have visual basic6 ,visual basic8 , visual basic9 وفى الصيغه اكتب كود : basic.لاحظ النقطه هذا سيعيد basic6 و basic8 و basic6 ملحوظه: فى المثال السابق النقطه ساوت ارقام ولاكنها يمكن ان تساوى اى رمز ملحوظه: النقطه تساوى اى حرف او رمز بما فيهم النقطه نفسها اما اذا كنت تريد النقطه نفسها يجب ان تسبقها شرطه مائله \(backslash) مثلاً لو ارد البحث عن اسم ملف قصير فى DOS ستحتاج النقطه فيمكنك كتابتها بالشكل كود : \.البحث عن حرف من مجموعة حروف: نستخدم الاقواس المربع[] لنعبر عن البحث عن اى حرف داخل الاقواس المربعه مثال: لو حاولنا البحث عن الصيغه كود : [chr]atهذه الصيغه ستمثل hat او cat او rat مثال اخر تخيل البحث عن كود : [bB]assamسوف تمثل الكلمات Bassam او bassam ملحوظه : الـ Regular Expression حساس لحالة الاحرف كما يمكن ان نستخدم المدى لاحظ ما يلى كود : [0-9] ==>> [0123456789]كما يمكن جمع المدى هكذا كود : [a-zA-Z0-9]يمكن استخدام اى حرفين او رمزين كمدى وسوف يكون المدى مابينهم من رموز فى جدول الاسكى ASCII مع ملاحظة ان يكون الحرف او الرمز الاول يسبق الحرف الثانى والا حدث خطأ. مثال: للبحث عن لون فى نسق HTML يمكن استخدام الصيغه التاليه كود : #[0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f]البحث عنحرف من مجموعة حروف الا: ببساطه اذا كنت تريد البحث عن اى حرف الا مجموعة حروف يمكنك استخدام الطريقه السابق مع وضع علامه ^داخل الاقواس المربعه. مثال كود : [Ff]ile[^0-9]\.xlsللبحث عن اسماء ملفات الاكسل المسماه file او File متبوعه باى حرف او رمز وليس ارقام لاحظ وضع العلامه ^ داخل الاقواس المربعه وليس خارجه ولاحظ ايضاُ انها توثر على كافة ما فى الاقواس المربعه وليس فقط ما يليها. اى انها تستثنى جميع ما فى الاثواس المربعه. البحث عن المسافات البيضاء ورموز التحكم: للبحث عن الاحرف التى لا تطبع استخدم كود : [\b]الاحرف الخاصه: وضع مجموعة احرف فى الصيغه معنى ذلك البحث عن هذه الاحرف ولاكن هناك بعض الحروف لها معنى خاص مثل النقطه التى تعنى اى حرف او رمز وكذلط الاقواس المربعه والتى تعنى مجموعة الحروف . ولاكن ماذا اذا كنت تريد البحث عن هذه الحروف ذاتها الحل بسيط يجب ان يسبقها \(backslash) حتى الـ\(backslash) نفسها يجب ان يسبقها \(backslash) لتكون بالصوره \\ كما يوجد بعض الرحوف الخاصه التى تتكون من اكثر من حرف وفى الغالب تيداء بالـ\(backslash) ويكفى اذالة الـ\(backslash) لتمثل ذاتها. من امثلة الرموز الخاصه: كود : \dاستخدام فئات POSIX : فئات POSIX هى اختصار لبعض الصيغ وتكون شكلها كهذا [ : print :] لاحظ ان الاقواس المربعه تابعه للـPOSIX وليست اقواس التجميع لاحظ ايضاً ان الـPOSIX ليست مدعومه من قبل كل اللغات امثله لبعض الـPOSIX : كود : [:alnum:] |