المطور العربي
الأثنين - 12/5/2008 م
الصفحة الرئيسية . كيف ؟ . دروس . إتصل بنا تكبير الخط

التعبيرات القياسية ( Regular Expressions )
تأليف : mubarmej6/9/2001

الصفحات

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

الطمع

في بعض الأحيان تكون هنالك أكثر من عبارة في النص تطابق القالب الذي وضعته، على سبيل المثال أنظر إلى النص التالي : <html>Some Text</html>

فماذا لو استخدمنا القالب التالي للبحث عن وسوم HTML في النص : <.*>

في هذه الحالات يقوم برنامج التعبيرات القياسية بالبحث عن أطول تعبير يطابق القالب في القطعة النصية المعطاة، حاول أن تعرف ما هي أطول قطعة نصية تطابق القالب السابق في المثال السابق؟ هل عرفتها؟ أنظر الآن إلى القطعة النصية مرة أخرى : <html>Some Text</html>

ما رأيك الآن؟ كما تلاحظ فإن أطول قطعة نصية تطابق العبارة السابقة هي العبارة كلها، لم يقوم البرنامج بإزالة وسوم HTML فقط بل سيزيل العبارة من أولها إلى أخرى.

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

الطريقة السابقة لمنع سلوك الطمع موجودة فقط في محرك التعبيرات القياسية التابع للغة Perl، وأما المواصفات العامة للتعبيرات القياسية فهي تنص على أن المحرك يجب أن يكون طماعا ولكنها في المقابل لا توفر طريقة لمنع هذا السلوك، على العموم يستطيع مبرمجي لغة PHP أيضا الاستفاده من ميزة منع الطمع عن طريق استخدام دوال التعبيرات القياسية المتوافقة مع Perl والتي تبدأ بالكلمة pereg.

<< تتابعات الهروب
ممتازة           ضعيفة



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