الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سلسلة تعلم Regular Expressions

بدأه Ahmed H. Alawady في 3 أكتوبر 2005 · 3 رد · 1,598 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

نقل النص والموضوع عن الأخ الغملاسي الموضوع

===========================================

السلام عليكم

الدرس الثاني : Matching Characters مقارنة أو مطابقة الحروف ( على اعتبار أن character تترجم حرف بالعربية )

مدة الدرس 6 دقائق والله أعلم . فقط حاول التركيز خمسة دقائق لتبدع طول العمر إن شاء الله

ينقسم هذا الدرس إلى ثلاثة أجزاء مختصرة وسهلة للغاية .

الجزء الأول : Matching Single Characters البحث عن حرف واحد معين .

في الحقيقة هذا اسهل شيء مر علي في الـ regex حيث إذا كنت تبحث عن حرف معين أو رقم معين

فقط قم بكتابةِ صراحةً اي بهذا الشكل : a أو 5 شاهد المثال

const string OnlyOneLetterRX = "a";

حتى لو كان مع حرف الـ a حروف أخرى أو أرقام أو كان أولهم أو أوسطهم أو أخرهم , المهم أن a معهم .

الجزء الثاني : Matching any Characters مطابقة اي حرف أو أي رقم

ماذا لو كنت تريد البحث عن الحرف a مع حرف أخر أو أكثر بشرط أن لا يقل عن حرف واحد أو رقم واحد

دون تحديد هذا الحرف أو هذا الرقم الذي تريد أن يكون بعد الحرف a .

أي أن بعد الحرف a تريد أن يكون ولو رقم أو حرف واحد أو أكثر .

فهنا تأتي الاداة النقطة . Period لتحقق لنا ذلك .

تعريف النقطة . : هي أداة تنوب عن خانة واحدة فقط اي كانت هذه الخانة ستتضمن, سواءً حرف أو رقم أو رمز

وهي أداة شرطية بحيث إذا تضمنت داخل الـ Regex فلابد أن ينوب عنها قيمة لتتم المطابقة.

مثالُ ذلك .

const string LetterAandAnyRX = "a.";

في هذه الحالة التطابق يمكن أن يكون aa أو aaa لكن ليس a

لماذا ليست a لوحدها لآننا لتو ذكرنا أن اداة النقطة . تنوب عن خانة واحده فقط وهي شرطية .

ونحن في المتغير LetterAandAnyRX كتبنا أن الحرف a يليه أي علامة أو حرف

لذلك لابد كشرط أن يكتب شيء بدل النقطة حتى ولو مسافة Space لتتم عملية المطابقة .

الجزء الثالث و الأخير في هذا الدرس هو مطابقة أحرف خاصه Matching Special Characters

مالذي يعنية القسم الثالث مطابقة أحرف خاصة تذكر النقطة التي ذكرناها في الجزء الثاني !!

لو إفترضنا أنك تريد مطابقة القيمة التالية

15.00

هل تلاحظ النقطة بعد الرقم 5 ؟

هذه النقطة كما تعلمنا سابقاً أنها إحدى أدوات Regex ولكننا الان لا نريدها كأداة و إنما كنقطة طبيعية نستخدمها لتمييز قيم الأموال مثلاً .

ففي هذا الحالة يسعفنا البطل المغوار \ Backslash ليخبر Regex أن الذي يلي الـ \ ليست تابعة لك .

اي في هذا المثال أن النقطة ليست أداتك التي تعول عليها بالإنابة عن خانة واحده و إنما هي نقط أرادها المبرمج

للتحقق منها وليس بها , اي للتحقق هل النقطة موجودة بين القيمة المذكورة أعلاه .

على سبيل المثال :

const string NumbersWithPeriodRX = "15\\.00";

أخيراً هل تعلم أن البطل \ Backslash يستطيع مساعدة نفسه بنفسه ليتخطى الـ Regex مثلاً لو أردنا أن نقول بسط على مقام

رقم على أخر يكون كالتالي "1\\2" كعملية مزدوجة له ليدرك Regex أن المراد هو \ كأداة رياضية

وليست كأداة تطابقية خاضعة لـ Regex لانه الـ \ Backslash أداة من أدوات Regex

وهنا سؤال يطرح نفسه : في ماذا يستخدم Regex الأداة \ Backslash ؟

علماً أن الجواب موجود في سياق الشرح .

أو بمعنى أخر تستطيع أن تعرف لنا أخي الكريم الأداة \ Backslash ؟

نكتفي بهذا القدر هذا والله أعلم

تم تعديل هذه المشاركة بواسطة Ahmed H. Alawady في 3 أكتوبر 2005 في 15:28

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#2

أخي الكريم الشرح غير واضح بالنسبة لي ممكن تفصيل اكثر ، يعني وين يكتب الكود بالضبط

#3

في حدث زر اضف هذا الكود

const string pattren = "www\\.[a-z-A-Z0-9\\-]+\\.com";
string input = "www.arabtean2000-forum.com/Moudey";

if(Regex.IsMatch(input, pattren, RegexOptions.IgnoreCase))
	MessageBox.Show(Regex.Match(input, pattren, RegexOptions.IgnoreCase).Value);

مواضيع متنوعة

#4

!

كنت اضن ان regular expression محصورة فقط ل linux و unix في ادوات awk و sed وغيرها !

اشكرك جزيل الشكر على النقل اخي احمد .

مواضيع مشابهة