المطور العربي
الأربعاء - 7/1/2009 م
الصفحة الرئيسية . كيف ؟ . دروس . إتصل بنا تكبير الخط

التعبيرات القياسية ( Regular Expressions )
4.05 نقطة - 81 صوت
تأليف : mubarmej6/9/2001
تسمع دائما بأن Perl هي إحدى أقوى لغات البرمجة من ناحية معالجة النصوص، الآن ستتأكد من ذلك! في هذه الدورة نقدم لك أقوى وأسهل الطرق لمعالجة النصوص باستخدام البرمجة الوصفية.

الصفحات

عرض نسخة قابلة للطباعة من الصفحة طباعة الصفحة

مقدمة

التعبيرات القياسية Regular Expressions أو Regex اختصارا هي طريقة وصفية للبحث عن نصوص معينة ذات نمط أو قالب ما، لفهم هذا الموضوع أكثر دعنا نأخذ مثالا على ذلك.

في دورة فيجوال بيسيك والنصوص قمنا بدراسة بعض الطرق المستخدمة في البحث عن النصوص وتغييرها وتحويرها .. الخ، في نهاية الدورة كان هنالك مثال يقوم بإزالة وسوم HTML من صفحات الويب، كما نعلم فإن صفحة HTML تحتوي على وسوم لتنسيق النصوص بشكل ما، وهذه الوسوم تكون محاطة بأقواس زاوية كما في المثال التالي : <tag>Some text</tag>

المثال الذي كان في دورة فيجوال بيسيك كان يقوم بالبحث عن الوسوم وإزالتها بطريقة تسمى بالطريقة الخطية Linear ويقوم فيها البرنامج باستخدام طريقة ما لإيجاد بداية الوسم ثم نهايته ويعيد باقي الأجزاء التي تقع خارج هذه الوسوم، لنفرض أننا نريد استخدام لغة Perl لعمل ذلك، ولنفرض أن لدينا متغيرة اسمها $html تحتوي على نصوص HTML ونريد أن نزيل الوسوم من محتوى هذه المتغيرة، فيمكننا عمل ذلك بالسطر التالي : $html =~ s/<(.*?)>//;

تقوم العبارة البسيطة السابقة مقام كل ما كتبناه من شيفرات في دورة فيجوال بيسيك والنصوص، هنا تمكن قوة التعبيرات القياسية.

عندما نقوم باستخدام التعبيرات القياسية فإننا نقوم بعمل قالب Pattern ليقوم البرنامج بالبحث عنه واستبداله أو التعامل معه بطريقة ما، في هذه الدورة ستتعلم كيف تقوم بكتابة هذه القوالب، لنلقي نظرة أخرى إلى المثال السابق والذي كان القالب فيه كالتالي : <(.*?)>

كما تلاحظ الحرف الأول كان القوس ( < ) والذي يعني بداية وسم HTML أما الحرف الأخير فهو القوس ( > )، وهو يرمز إلى نهاية وسم HTML، وهذان الحرفان يعتبران حرفان عاديان وليسا جزءا من رموز التعبيرات القياسية، بعد ذلك تأتي علامة النقطة ( . )، وهذه العلامة تعني أي رمز أو أي حرف أو أي شيء، وبعدها علامة ( * ) والتي تعني بأن الحرف السابق لها يمكن أن يكون مكررا لمرة أو أكثر أو لا يكون موجودا أصلا، أما الأخير فهو علامة الاستفهام ( ? ) وهي خاصة بلغة Perl ولا تتبع المواصفات العامة للعبارات القياسية، وهي مهمة جدا في بعض الأمور وسنأتي على شرحها فيما بعد أيضا، هذا القالب كان مجرد أولي لتوضيح فكرة القوالب والعبارات القياسية.

التكرار >>



جميع الحقوق محفوظة - المطور العربي 2000   ©   All Rights Reserved - ArabBuilder.com 2000