التعابير القياسية عبارة عن مجموعة من التسلسل الخاص للحروف وظيفتها الأساسية المساعدة على إيجاد أو البحث عن تطابق سلسلة ما في سلسلة أخرى وهي تتميز بإستخدامها لمجموعة من الرموز تسمى الأنماط و غالبا ما ينتشر إستخدام التعابير القياسية في عالم اليونكس.
يتم إستخدام التعابير القياسية في بايثون من خلال وحدة re والتي تم إضافتها الى بايثون منذ نسخة 1.5 ومنذ ذلك الحين أصبحت جزء لا يتجزأ من بايثون وهي عبارة عن مجموعة من القواعد يتم تحديدها للبحث عن التطابق وكانك تسأل السؤال التالي : هل تحتوي هذه السلسلة على هذا النموذج؟ أو هل يوجد تطابق لهذا النموذج في أي مكان في هذه السلسلة؟ كما يمكن أيضا إستخدام التعابير القياسية من أجل تعديل السلاسل او تقطيعها من خلال عدة طرق .
أول شيء يجب ان نعرفه عن التعابير القياسية هو انهم عبارة عن سحر غامض ويصعب تذكره ولكن وبالمقابل يمكنك إستخدامها لتفعل الكثير وسطور برمجية قليلة حيث تحتوي هذه الوحدة على مجموعة من الدوال التي تقوم بالتحقق من إذا كان النمط يتطابق مع السلسلة و أما الأمر الثاني الذي يجب معرفته أيضا عن التعابير القياسية هو انها تتعامل مع السلاسل النصية فقط والتي تحتوي على الحروف العادية والخاصة ومثال على الحروف العادية مثل A,
وللتعامل على التعابير القياسية يجب علينا ان نقوم بإستدعائها في اول سطر من ملفات البايثون
import re
دعونا نقوم بالبحث عن حرف في سلسلة ما بإستخدام التعابير القياسية
import re if re.search('a', 'a'): print "found it!" else: print "didn't find it :("
بعد تشغيل هذا البرنامج سنحصل على “تم إيجاده” .
الان قم بإستبدال السطر التالي :
if re.search('a', 'a'):
بالسطر التالي :
if re.search('a', 'batman'):
سنحصل أيضا على “تم إيجاده”
إذن مالذي حدث ؟ الأمر الذي حدث هو ان الأمر re.search قام بأخذ القيمة اﻷولى (يتم تسميتها بالنمط) وبدا يبحث عنها في القيمة الثانية وفي كلتا المثالين الذي قمنا بأخذهما تم إيجادهما.
دعونا نأخذ امثلة أخرى .
جميع اﻷمثلة مفهومة ولكن أظن أن السطر الأخير يحتاج الى بعض من التوضيح إذ كيف يمكن للنمط *a أن يتواجد في السلسلة cucumber ، حسنا الرمز * في التعابير القياسية لديه معنى خاص ولكنني سأقوم بشرحه في المرة القادمة مع بعض من الرموز الاخرى فتابعونا .