السلام عليكم
الدرس الثاني : Matching Characters مقارنة أو مطابقة الحروف ( على اعتبار أن character تترجم حرف بالعربية )
مدة الدرس 6 دقائق والله أعلم . فقط حاول التركيز خمسة دقائق لتبدع طول العمر إن شاء الله
ينقسم هذا الدرس إلى ثلاثة أجزاء مختصرة وسهلة للغاية .
الجزء الأول : Matching Single Characters البحث عن حرف واحد معين .
في الحقيقة هذا اسهل شيء مر علي في الـ regex حيث إذا كنت تبحث عن حرف معين أو رقم معين
فقط قم بكتابةِ صراحةً اي بهذا الشكل : a أو 5 شاهد المثال
Const OnlyOneLetterRX As String = "a"
حتى لو كان مع حرف الـ a حروف أخرى أو أرقام أو كان أولهم أو أوسطهم أو أخرهم , المهم أن a معهم .
الجزء الثاني : Matching any Characters مطابقة اي حرف أو أي رقم
ماذا لو كنت تريد البحث عن الحرف a مع حرف أخر أو أكثر بشرط أن لا يقل عن حرف واحد أو رقم واحد
دون تحديد هذا الحرف أو هذا الرقم الذي تريد أن يكون بعد الحرف a .
أي أن بعد الحرف a تريد أن يكون ولو رقم أو حرف واحد أو أكثر .
فهنا تأتي الاداة النقطة . Period لتحقق لنا ذلك .
تعريف النقطة . : هي أداة تنوب عن خانة واحدة فقط اي كانت هذه الخانة ستتضمن, سواءً حرف أو رقم أو رمز
وهي أداة شرطية بحيث إذا تضمنت داخل الـ Regex فلابد أن ينوب عنها قيمة لتتم المطابقة.
مثالُ ذلك .
Const LetterAandAnyRX As String = "a."
في هذه الحالة التطابق يمكن أن يكون aa أو aaa لكن ليس a
لماذا ليست a لوحدها لآننا لتو ذكرنا أن اداة النقطة . تنوب عن خانة واحده فقط وهي شرطية .
ونحن في المتغير LetterAandAnyRX كتبنا أن الحرف a يليه أي علامة أو حرف
لذلك لابد كشرط أن يكتب شيء بدل النقطة حتى ولو مسافة Space لتتم عملية المطابقة .
الجزء الثالث و الأخير في هذا الدرس هو مطابقة أحرف خاصه Matching Special Characters
مالذي يعنية القسم الثالث مطابقة أحرف خاصة تذكر النقطة التي ذكرناها في الجزء الثاني !!
لو إفترضنا أنك تريد مطابقة القيمة التالية
15.00
هل تلاحظ النقطة بعد الرقم 5 ؟
هذه النقطة كما تعلمنا سابقاً أنها إحدى أدوات Regex ولكننا الان لا نريدها كأداة و إنما كنقطة طبيعية نستخدمها لتمييز قيم الأموال مثلاً .
ففي هذا الحالة يسعفنا البطل المغوار \ Backslash ليخبر Regex أن الذي يلي الـ \ ليست تابعة لك .
اي في هذا المثال أن النقطة ليست أداتك التي تعول عليها بالإنابة عن خانة واحده و إنما هي نقط أرادها المبرمج
للتحقق منها وليس بها , اي للتحقق هل النقطة موجودة بين القيمة المذكورة أعلاه .
على سبيل المثال :
Const NumbersWithPeriodRX As String = "15\.00"
أخيراً هل تعلم أن البطل \ Backslash يستطيع مساعدة نفسه بنفسه ليتخطى الـ Regex مثلاً لو أردنا أن نقول بسط على مقام
رقم على أخر يكون كالتالي "1\\2" كعملية مزدوجة له ليدرك Regex أن المراد هو \ كأداة رياضية
وليست كأداة تطابقية خاضعة لـ Regex لانه الـ \ Backslash أداة من أدوات Regex
وهنا سؤال يطرح نفسه : في ماذا يستخدم Regex الأداة \ Backslash ؟
علماً أن الجواب موجود في سياق الشرح .
أو بمعنى أخر تستطيع أن تعرف لنا أخي الكريم الأداة \ Backslash ؟
نكتفي بهذا القدر هذا والله أعلم

