القائمة الرئيسية

الصفحات

 



المحاضرة الخامسة عشر

التعبيرات القياسية

ما هي التعبيرات القياسية

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

استخدامات التعبيرات القياسية


1.   تحليل  النصوص او السلاسل بشكل عام (نص او رموز او ارقام)

2.   التحقق من صحة البيانات

3.   التحليل البسيط

4.   انتاج أنظمة تميز بناء جملة

5.   يمكن استخدامها في مختلف البرامج ( في جميع لغات البرمجة)

رموز التعبيرات القياسية


1-  \d أي رقم من الصفر الى تسعة مرتبة واحدة فقط

2-  \w أي حرف كبير او صغير او أي رقم (حرف واحد او رقم من مرتبة واحدة فقط)

3-  \s مسافة واحدة فقط

4-  [] صناعة تنسيق مثل حرف واحد من مجموعة احرف فصل ] فصل [ او حرف واحد صغير [a-z] او حرف واحد عربي ]ا-ي[  او رقم من 5 الى 9 ]9-5[ وهكذا

5-  {} تستخدم في تكرار الرموز السابقة مثل \d {3} كتابة رقم من ثلاث مراتب او \d {6-9} لكتابة رقم ليس اصغر من ست مراتب ولا اكبر من تسعة مراتب

6-  * الخيار للمستخدم في ترك الحقل فارغ او ادخال بالتنسيق المطلوب او تكرار التنسيق المطلوب عدة مرات

7-  + يجب على المستخدم ادخال التنسيق المطلوب مرة واحدة على الأقل

8-  ? ترك الحقل فارغ او ادخال التنسيق مرة واحدة فقط

9-  () تجميع عدة تنسيقات باستخدام الرموز السابقة

10-  | الجمع بين اكثر من تنسيق باستخدام التعبير المنطقي or

 11- . حرف يتم تجاهله

12-  ^ بداية السطر

13-  $ نهاية السطر

14-  \. ,\? ,\* ,\+    \$ ,\^للوصول هذه الرموز بدون تنفيذ معانيها سابقة الذكر


مثال 1

تنسيق ايميل

^[\w.+\-]+@gmail\.com$

مثال 2

تنسيق رقم موبايل  عراقي

^(((\+|00)964)|(0)*)7\d{9}$

 

استخدام التعبيرات القياسية في لغة بايثون

تتيح مكتبة re في بايثون التعامل مع التعابير القياسية حيث نقوم بمقارنة النص مع التعبير المطلوب وترجع None في حالة عدم التطابق

مثال 3

تنسيق ايميل باستخدام بايثون


 import re

text=input ('enter an email')

patt='^[\w.+\-]+@gmail\.com$'

chek=re.match(patt,text)

if chek == None:

    print ('no')

else:

    print ('yse')



مثال 2

تنسيق رقم موبايل عراقي باستخدام بايثون


import re

text=input ('enter an phone number')

patt='^(((\+|00)964)|(0)*)7\d{9}$'

chek=re.match(patt,text)

if chek == None:

    print ('no')

else:

    print ('yse')




تحميل ملخص المحاضرة من هنا

تعليقات

التنقل السريع