السلام عليكم
الدرس السابع : Using Sub Expressions إستخدام جزء من الصيغة أو التعبير الصيغي .
مدة الدرس 4 دقائق
ينقسم هذا الدرس إلى قسمين
الأول المجموعات Groups والثاني المجموعات المتداخلة Nested Groups
تعرف التجزئة بالمجموعات Groups وذلك بإستخدام الأداة () القوسين المنحنيين أو الدائريين Round Brackets .
القوسين المنحنين أداة تجعل من الصيغة المعقدة Complex Expression الي صيغة منسقة Documenting Expression
إضافة إلى ذلك آلية التحكم في الصيغة يعتمد إعتمادً كلياً على المجموعات
وكذلك تقنية الـ Back Reference والذي سيكون عنوان درسنا القادم , تعتمد على المجموعات .
المهم إذا رأيت قوسين منحنين في صيغةِ ما, فتأكد أن هذه مجموعة مالم يكتب قبلها بالـ backslash \
أو ما يعرف بـ Escaping .
لِنفترض أننا نريد أن نكتب صيغة مقاربة للتحقق من عنوان الـ IP
ملاحظة (الطريقة التي سنكتبها لا تتوافق مع الـ IP ) والسبب أننا لا نريد ان نخوض في أدوات لم نأخذها بعد .
لكن المثال يتطلب علينا أن نكتب صيغة مقاربة لها فقط .
سنقوم بكتابة صيغة دون إستخدام المجموعات بهذا الشكل
\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}هذه الصيغة تبحث عن رقم من صفر إلى تسعة تتكرر في كل مقطع برقم أو رقمين أو ثلاثة مع النقطة الفاصلة مثلاً
0.12.111.200
الان سنقوم بكتابتها بإستخدام أداة المجموعات () بهذا الشكل
^(\d{1,3}\.){3}\d{1,3}$تلاحظ أن أداة المجموعة () ساهمت في إختصار الصيغة , بحيث تم جمع المقطع الاول \d{1,3}\.
والثاني \d{1,3}\.والثالث \d{1,3}\. من الصيغة في مقطع واحد (\d{1,3}\.){3}
و إستخدمنا أداة القوسين المعقوفين {3} لتكرار العملية ثلاثة مرات ,
بدلاً من تكرارها بشكل كلاسيكي مطول \d{1,3}\.\d{1,3}\.\d{1,3}\.
الغرض من ذلك أننا نريد أن نكرر الصيغة ثلاثة مرات فقط , بحيث يتحقق من كل واحد إلى ثلاثة أرقام مع فاصلة نقطية اي نقطة (.)
وثم أكملنا الصيغة بهذا الشكل
\d{1,3}والسبب في ذلك أننا لا نريد ان نكرر النقطة بعد الخانة الرابعة من الأرقام .
القسم الثاني Nested Groups المجموعات الداخلية
هي بأختصار مجموعة في مجموعة أو مجموعات في مجموعات
ومثالُ ذلك أننا نريد بالمثال الثاني أن نكرره مرتين بشكل مجموعة متداخلة سيكون بهذا الشكل.
^((\d{1,3}\.){2}){2}\d{1,3}$التحليل
كل الذي قمنا به أننا بعد القوسين المعقوفين للمجموعة الأولى وضعنا عليها قوس منحني
لتصبح مجموعة داخلية ثم تبعناها بقوسين معقوفين {2} طلبنا بهذا تكرار المجموعة الجديدة بما أشتملت من
مجموعة داخلية بأن تكرر مرتين فقط ثم بعد ذلك أتبعناها بهذه الصيغة \d{1,3} لنتفادا مشكلة النقطة .
ملاحظة: لا تقتصر أداة () المجموعة على التنسيق فقط و إنما له فؤاد عديدة سنتطرق لها
في الدرس القادم ....... ودمتم في رعاية الله .
أسئلة الدرس السابع كالتالي
1 – أكتب صيغة تقوم بإنشاء أرقام من 1 إلى 9 في كل خانتين وتفصلهم علامة الـ (-)
وقم بتكرار العملية ثلاثة مرات مثلاً 34-23-34
2 – أكتب صيغة مماثلة بتكرار العملية السابقة ضعفها بحيث تصبح 12-12-12-12-12-12
3 – ماذا تعني الصيغة التالية
\( \)
4- صح أم خطأ هذه الصيغة
\(^ab\)
نريد أن نتحقق من قوسين ليس بداخلهما الحرفان ab
هذا والله أعلى و أعلم
السلام عليكم