08-10-12, 11:57 AM
كاتب الموضوع : MrBassam
بسم الله الرحمن الرحيمالسلام عليكم ورحمة الله وبركاته
بعد مراجعتى لما سبق ان كتبته فى الجزء الاول والثانى اكتشفت انى أخطأت فى أخر جزء – على الاقل –
اقتباس:
[TABLE="width: 100%"]
[TR]
[TD="class: alt2"]المشاركة الأساسية كتبها MrBassam
ملحوظه: فى حالة البحث عن اى عدد من الرموز ربما تكون النتائج اكبر مما تتوقع ولذلك ينصح بوضع شرط للنهايه مثلاً نص ثابت ينتهى به التعبير او الصيغه مثل
كود :
<[Bb]>.*</[Bb]>
[/TD]
[/TR]
[/TABLE]
الحقيقه انه حتى مع وضع شرط نهاية فسيتجاوزه الـ Regular Expression حتى اخر شرط, تخيل معى اننا سنستخدم الصيغة السابقه والتى هى
كود :
<body><h1>welcome</h1><br><B>this is my website</B><br><b>Coming Soon</b>
كود :
<B>this is my website</B><br><b>Coming Soon</b>
كود :
<B>this is my website</B>
<b>Coming Soon</b>
قد يبدو هذا غريباً ولاكن هذا ما يحدث فى الحقيقه حيث كان متوقعاً فى المثال السابق ان تكون النتائج
كود :
[Ff]orm
للتغلب على هذه المشكله نستخدم الصيغه التاليه للبحث عن أصغر كمية حروف ممكنة
؟* بدلاً من استخدام *
؟+ بدلاً من أستخدام +
جرب المثال السابق مع أستبدال الـ * بالـ ?*
يسمى كلاً من ?+ و ?* بالصيغه البطيئة لانها بالفعل كذلك حيث تدقق حرف حرف
مطابقة المكان
فى بعض الاحيان ربما تريد مطابقة او البحث عن مكان عبر النص
ولاكن ما هو المكان؟
يمكن اعتبار المكان حرف تخيلى – وليس حرف تحكم – تستخدمه فى كتابة صيغك لتعبر عن اماكن معينه مثل بداية الكلمة اونهاية الكلمة او بداية الجمله او نهايتها
مطابقة بداية او نهاية الكلمه
تخيل انك تريد البحث عن كل الكلمات form فى النص التالى
A form have a FormBorderStyle which Gets or sets the border style of the form.
الموضوع بكل بساطه يمكنك استخدام الصيغه التاليه للبحث عن الكلمه form او Form
كود :
\b[Ff]orm\b
سوف تكون النتائج ما يلى
Form التى هى ثانى كلمه وهذا جيد
Form التى تقع ضمن الكلمه FormBorderStyle
Form التى هى اخر كلمه
فى المثال السابق كنا نريد البحث عن كلمه فقط وليس مجرد مجموعة حروف ضمن كلمه فى هذا الحاله نستخدم الـ \b لنعبر عن مكان بداية او نهاية كلمه . استبدل الصيغه السابقة بالتاليه
كود :
<br>{3,}
سوف تحصل على form التى فى البدايه و form التى فى النهاية فقط
لاحظ ان الـ b\ليست المسافه التى تسبق الكلمة او التى تليها وانما هى بالفعل مكان بداية كلمه او نهاية كلمة
ملحوظه: فى بعض لغات البرمجه ربما يعبر >\ عن مكان بداية كلمه و <\ عن مكان نهاية كلمه
مطابقة بداية الجمله او نهايتها
اذا اردت ان تبحث فى او النص عن صيغه معينه يمكنك استخدام ^ التى تعبر عن بداية جمله
ملحوظه: فى اغلب الاحيان يعامل الـ Regular Expression كل النص على اساس انه جمله واحده اى لايكترس بالحروف r\n\رغم ذلك يمكنك ان تخبر الـ Regular Expression ان يعامل النص على انه اكثر من جمله من خلال تضمين الخيار (?m) فى بداية الصيغه.
ملحوظه: هذا الخيار غير متوفر فى كل لغات البرمجه التى تدعم Regular Expression
ملحوظه: كثيراً من اللغات بها ضبط الخيارات من خلال طرق او خصائص لكائن الاستعلام عن الـ Regular Expression خارج الصيغه , هذا الخيارات قد تكون ضبط حساسية حالة الاحرف او معاملت التص على انه اكثر من جمله والكثير
راجع وثائق لغة البرمجه التى تستخدم لمذيداً من التفاصيل
الصيغ الفرعية Subexpressions
فى نصوص الـ Html يوجد Tag مسئول عن ترك سطر فارغ هو <BR>
تخيل انك تريد البحث عن الاسطر الفارغه التى تذيد عن ثلاث سطور مثل
<br><br><br><br><br>
<br><br><br><br>
<br><br><br>
فى النص التالى
<body><center><br>Welocome<br><br><br><br>to my site
لقد تعرضنا للتكرار فيما سبق اذاً فلنجرب الصيغه التاليه
كود :
(<br>){3,}
سوف تبحث هذه الصيغه عن نص يشبه التالى
<br>>>
<br>>>>
حيث ان التكرار يكون للحرف الذى يسبق اقواس التكرار
والحل فى هذه الحالة استخدام الصيغ الفرعية
باختصار يمكنك تقسيم صيغتك الى صيغ فرعية باستخدام الاقواس () وتعامل ما بين الاقواس على انه مجرد حرف او ان صح التعبير عنصر من عناصر الصيغه
استبدل الصيغه السابقه بالتاليه وجرب
(<br>){3,}
سوف يعمل بأذن الله
ملحوظه بسيطه: الاقواس () تعتبر رموز خاصه اى يجب ان تسبق بشرطه مائله عند البحث عنها ذاتها.
تعتبر الصيغ الفرعيه من اهم اسباب قوة الـ Reqlar Expression حاول ان تفهمها جيداً
كثيراً من المطورين يحيطون صيغهم بالاقواس () بشكل طبيعى وهذا لاباس به الا انه يوثر قليلاً فى سرعة التنفيذ.
الصيغ الفرعيه المتشابكه:
يمكنك ان تضع تعبير فرعى داخل اخر فرعى من تعبير اخر..... . لك مطلق الحريه ان تفعل ما تريد حتى تحصل على ما تريد.
ربما تبدو الصيغ الان معقدة الى حداً ما
لا تقلق تذكر ان تقراء الصيغ من الداخل من داخل الاقواس اقرائها تعبير تعبير او حرف حرف
ولا تنزعج من شكلها .
المره القادمه بأذن الله سوف نتعرف على المراجع والاستبدال وارجاع ما بداخل الصيغ كما سنتعرف الشروط