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

سلسلة تعلم Regular Expressions

مغلق
بدأه Ahmed H. Alawady في 3 أكتوبر 2005 · 0 رد · 852 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1

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

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

السلام عليكم

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

مدة الدرس 12 دقائق

في الدرس الثاني طرحنا السؤال التالي : ما هو تعريف الـ \ backslash ؟

وبما أن الاستاذ : عبد الله فتحي أجاب على السؤال المطروح في الدرس السابق فإننا نكتفي بنقل ماسطرتهُ يداه الكريمتان :

وكان الجواب :

بخصوص علامة \ Backslash فإنها تقوم بإلغاء وظيفة الحرف الذي يليها إذا كان معاملاً خاصاً بالـ Regex

مثلاً معامل النقطة (.) يعني أي حرف .. وإذا وضعنا قبله \ Backslash فإنه يعني أننا نريد حرف النقطة نفسه، وليس المعامل الذي ينوب عن أي حرف .. وكذلك الحال بالنسبة لبقية المعاملات .. أحسن الله إليك يا أستاذ عبدالله .

الدرس الثالث ينقسم إلى قسمين رئيسيين وهما المطابقة و عدم المطابقة .

القسم الأول مطابقة مجموعة من القيم

يتم مطابقة مجموعة من القيم بإستخدام أداة القوسين المستطيلين بهذا الشكل []

لمطابقة ABC مثلاً نكتب التالي

[ABC]

في الإختبار AAA مطابقة و ABC مطابقة CCC مطابقة لكن ليس abc ولا DEF

السبب : قانون المطابقة شرطي أدناه قيمة واحدة من القيم المكتوبة بين القوسين لذلك أن A موجودة ضمن

القيم ABC فـ AAA مطابقة, كذلك بالنسبة لــ CCC مطابقة كون الحرف C ضمن المجموعة ABC,

لكن ليس abc السبب أنهم حروف صغيرة Small letters ونحن نبحث عن الحروف الكبيرة أولاً capital letters

وكذلك ليست DEF لانهم ليسوا من ضمن المجموعة المحددة بـ ABC و إن كانوا أحرف كبيرة أليس كذلك .

تحذير CAUTION

لا تقوم بوضع مسافة إن أردت مطابقة مجموعة محددة من الأحرف

السبب أن المسافة تعني قيمة فارغة يراد بها التحقق وليست لإستخدام التنسيق بحيث يكون مقروء من قبل الأخرين Readability

بهذا المثال يتضح المقال

[A B C ]

في المطابقة DE F مطابق والسبب المسافة التي بين E و F تمت بها مطابقة

المجموعة الـ A B C و إن كان ليس هذا الذي تريد !!!

لانك بالمجموعة التالية A B C تقول طابق أما الحرف A أو مسافة أو الحرف B أو الحرف C

لذلك يجب .... توخى الحذر .

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

و إنما نستخدم الشرطة hyphen - وتسمى DASH كذلك, وهي بمثابة علامة الناقص -

وتنوب عن الكلمة من و إلى . تستخدم بهذا الشكل مثلاً

[A-Z]

وتعني مطابقة ولو حرف واحد كبير من الحرف A الى الحرف Z

لمطابقة الأحرف الصغير والكبيرة و الارقام يكون كالتالي

[A-Za-z0-9]

تلاحظ أن Dash - محصورة بين الحرف الذي قبلها والذي بعدها بحيث تمثل من و إلى

أما ما قبل الحرف الذي يسبقها والحرف الذي يليها لا ينتمون إليها مثلاً [ac-e]

في المطابقة a مطابقة لانها موجودة لكن b ليست مطابقة لانها ليست موجودة و هي تقع قبل الحرف c

لذلك لم تتضمنها الأداة من و إلى - لان التركيبة [ac-e] تقول طابق كل من acde .

القسم الثاني : عدم المطابقة ( يحتاج بعض التركيز لان المعطيات مقلوبة )

عدم المطابقة يتم بنفس التركيبة تمامً مع زيداة الأداة ^ وتسمى caret أو circumflex

و للأسف لا أجد لها مصطلح مرادف في العربية

إلا أنها تذكر بالعلامة ثمانية الصغيرة العلوية إن شِئت والله اعلم .

قوانين الـ ^ circumflex

لابد أن توضع بعد المستطيل الأول لتكون مسؤوله عن الذي يليها

مثلاً

[^a-z0-9]

هنا هي مسؤولة عن كل من a – z و 0-9 .

لو وضعت بهذا الشكل [a-z^0-9] هنا هي مسؤولة فقط عن 0-9 وليس عن a-z .

علماً أن الأداة ^ لها إستخدام أخر وهو لتحديد بداية السطر , لكن ليس الأن مقامه .

مثلاً لو أردنا أن لا تتضمن الحروف الأبجدية الصغير الإنجليزية يكون كالتالي

[^a-z]

في الإختبار abC مطابقة و sBB مطابقة السبب وجود كل من الحرف C كحرف كبير وكذلك في التطابق الثاني وجود

الحرفي BB إذا قانون المطابقة شرطي كماذكرنا سالفاً لكن هذه المرة يقول طابق بشرط لا تكون الحروف الصغيرة

لوحدها وطابق ولو حرف واحد كبير أو رقم أو مسافة أو اي شيئ بشرط أن لا تكون مقتصرة على الحروف الصغيرة فقط .

اي بالنسبة للمجموعة المحددة

[^a-z]

نقول هذه المجموعة لا تريد تطابق الحروف الصغيرة

من حيث البنية لكن هي في الأصل تقول لو وجد حرف كبير تم التطابق أو رقم ما تم التطابق و إن كانت هنالك أحرف صغيرة ,

لكن ليس الحروف الصغيرة لوحدها , لابد ان يتخللها شيء لا ينتمي للأحرف الصغيرة .

أخيراً لحصر مجموعة عن أخرى من حيث المكان position يكون كالتالي

في هذا المثال

[a-z][A-Z]

لابد أن يكون ولو حرف واحد صغير يتبعه حرف واحد كبير لا يهم الموضع

كانا في البداية أو الوسط او النهاية المهم أنه كشرط لا بد أن يكون الحرف الصغير متبوع بحرف كبير .

لدي قبل أن أنهي بعض الأسئلة أتمنى الإجابة عليها

السؤال الأول : قم ببناء صغية لا تقبل الرقم سبعة 7

السؤال الثاني : لو بنينا صيغة بهذا الشكل [A-z]

فما هي الـ Characters التي سيتم مطابقتها ؟ ( إنظر في الـ ASCI codes ) للمساعدة .

ASCI codes

السؤال الثالث والأخير : قم ببناء صغية لا تقبل المسافة , وفقاً لما تعلمناه

هذا والله أعلى و أعلم .

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

هذا الموضوع مغلق.

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