تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
Regular Expression الجزء الثانى
#1
كاتب الموضوع : MrBassam

بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته


فى الجزء الاول تعرفنا على مفهوم الـ Regular Expression ودعم الدوت نت له ككثير من لغات البرمجه
كما تعرفنا على كيفية كتابة الصيغ للبحث عن نص ساكن او البحث عن نص يتخلله اى حرف او حرف من مجموعة حروف , كذلك تعرفنا على كيفية البحث عن المسافات البيضاء ورموز التحكم التى لا تطبع , كما تعرفنا على الاحرف الخاصه ومعانيها وكيفية البحث عنها , وتعرفنا ايضاً على فئات الـ POSIX .
واليوم سوف نكمل بأذن الله.

البحث عن مجموعة حروف:

فى ما مضى كنا نبحث عن حرف واحد سوء كان الحرف ذاته كنص ساكن او اى حرف باستخدام النقطه او حرف من مجموعة حروف باستخدام المجموعات داخل الاقواس المربعه[]
ماذا اذا اردنا البحث عن مجموعة حروف
فى هذه الحاله نستخدم احد الطرق التاليه:

البحث عن حرف او مجموعة حروف:
ملحوظه: ياتى ذكر الكلمه "حرف" كثيراً فى اغلب الاحيان لتعبر عن حرف او رمز وربما رقم ايضاً .
يمكن ان نستخدم الـ "+" للبحث عن حرف او اكثر من حرف من جنس ما يسبقه
مثال: للبحث عن رقم واحد/عدد واحد من مجموعة الارقام العشريه الصحيحه نستخدم الصيغه [0123456789] او [9-0]
والناتيج يكون رقم واحد Diget اما اذا اردنا البحث عن الاعداد الحقيقيه نستخدم الصيغه +[0-9] هذه الصيغه سوف تعيد اى رقم مثل 255 او 10252 او 25 او 7
مثال اخر للبحث عن جمبع الكلمات فى النص نستخدم +w\ حيث w\تعنى اى حرف
مثال اخر للبحث عن رقم ثنائى نستخدم الصيغه +[01]

البحث عن حرف او مجموعة حروف او لاشئ:
الـ "+" تحل محل حرف واحد على الاقل او اكثر من نفس النوع الذى يسبقها , اما اذا اردنا ان يكون هذا الحرف اختيارياً بمعنى ان يكون حرف او مجموعة حروف او لاشئ نستبدل الـ "+" بالـ "*"
بالتاكيد معظمنا يعرف الـ "*" وكثيراً ما استخدمناها ايام الـ DOS او فى البحث فى الـ Windows او حتى مع المعامل Like
اما بالنسبه لصيغتها فهى لاتختلف عن الـ"+" سوء انها يمكن ان تساوى لاشئ - اى حرف او اكثر او لاشئ من جنس ما يسبقها -

البحث عن حرف واحد او لاشئ:
نستخدم الـ "؟" لمطابقة الحرف الذى يسبقها او لاشئ
بمعنى اخر نستخدم الـ"؟" فى حالة وجود حرف اختيارى مثل علامة الدولار $ فى اخر اسماء المتغيرات فى الفيجوال بيسك مثلاً.
مثال: الصيغه //:?https سوف تساوى //:https و //:http ايضاً , فى هذه الحاله الحرف S اختيارى.
لاتنسا ان تضع \ قبل الـ ؟ اذا ارت البحث عنها ذاتها.

تحديد عدد الحروف المراد البحث عنها:
باستخدام الطرق السالفة الذكر استطعنا ان نبحث عن مجموعة حروف او حرف واحد على الاقل او لاشئ
ماذا لو اردنا ان نبحث عن عدد معين من الحروف او ان يكون عدد الحروف فى مدى معين مثل كلمة المرور التى لاتقل عن 6 حروف ولا تزيد عن 20 حرف
يوفر لنا الـ Regular Expression ما يعرف بالـ Intervals من خلال الاقواس {} التى من خلاله يمكن التحكم فى عدد تكرار عنصر الصيغه.
الصيغه الاولى: لتكرار الصيغه بعدد معين نستخدم {رقم} للبحث عن عدد رقم من جنس ما سبق
مثال : للبحث عن الوان الـHTML فى النسق السداسى عشر نستخدم الصيغه

كود :
#[0-9A-Za-z]{6}
الصيغه الثانيه: ان يكون عدد الحروف فى مدى معين اى لايقل عن عدد معين ولا يذيد عن عدد معين
فى هذه الحاله نستخدم الصيغه {اكبر عدد,اقل عدد}
مثال: لنفرض اننا نريد التحقق من كلمة المرور انها اكبر من 6 حروف واقل من 21 حرف ستكون الصيغه بالشكل التالى

كود :
\w{6,21}
الصيغه الثالثه : مطابقة/البحث عن عدد من الحروف لا يقل عن عدد معين
فى هذه الحاله نستخدم الصيغه {,رقم} لاتنسا الفاصله التى تتيع الرقم
مثال : لنتاكد ان عدد حروف مشاركة عضو اكبر من عشرين حرف على الاقل نستخدم الصيغه التاليه

كود :
\w{20,}
لاحظ ان الـ + تساوى {,1}
ملحوظه: فى حالة البحث عن اى عدد من الرموز ربما تكون النتائج اكبر مما تتوقع ولذلك ينصح بوضع شرط للنهايه مثلاً نص ثابت ينتهى به التعبير او الصيغه مثل

كود :
<[Bb]>.*</[Bb]>
للبحث عن النص السميك فى نص html
يتبع
}}}
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم