التعبيرات
العادية في بايثون Les
expressions régulières en python
تستخدم التعبيرات العادية في جميع اللغات . إنها أداة تسمح لك بالتحقق مما إذا كان محتوى المتغير له شكل متوقع. المثال ، إذا استرجعنا رقم هاتف ، فإننا نتوقع أن يتكون المتغير من أرقام ومسافات ولكن لا شيء أكثر من ذلك.
الأساسيات Les bases
نستخدم الرموز التي لها معنى في البايتون :
. تمثل النقطة أي حرف .
^ يظهر بداية مقطع ولكن يعني أيضا
$ نهاية الشريحة
\ d يتكون الجزء من أرقام فقط ، وهو ما يعادل [0- 9 ].
\D لا يتكون المقطع من رقم ، وهو ما يعادل [^ 0-9].
\s مسافة ، هي eالتي تساوي
[ \ t \ n \ r \ f \ v ].
\S لا توجد
مسافة، وهو ما يعادل [ ^ \t\ n\ r\ f\ v] .
\w الوجود
الأبجدي الرقمي ، وهو ما يعادل [ a- z A- Z0 -9 _].
\W لا يوجد وجود
أبجدي رقمي [^ a - z A - Z 0 - 9_].
سنقوم باختصار أي دورة نظرية في أسرع وقت ممكن ، والبرمجة ممتعة عندما تكون ملموسة .
لنأخذ هذا البرنامج التعليمي
كلعبة: الهدف من اللعبة هو توقع ما إذا كان التعبير est true ou false tout simplement.
المكتبة La bibliothèque
re
قم بتشغيل مترجم python الخاص بك
واستيراد المكتبة re .
>>> import re
ثم دعنا نختبر تعبيرا:
>>> print re.match(r" GR (.) ? S " , " GRIS ")
إذا لم تكن الإجابة لا شيء ، فذلك لأن المباراة تتطابق .
البحث عن عبارة Chercher une expression
المطابقة مثيرة للاهتمام للغاية
للتحقق من سلامة المتغير ، ولكن من الممكن أيضا البحث عن تعبيرات محددة في سلسلة.
>>> import re
>>> re.findall( " ( [ 0 – 9 ] + ) "
, " Bonjour aaa aurevoir bbb")
[ ' aaa ', ' bbb ']
استبدال تعبير Remplacer une expression
يتم استبدال التعبير في جميع
التطابقات الممكنة:
>>> data
= """
... mimoni; rachid;27 ans;
... jaki; chan ;50 ans ;
... """
Mimouni ,rachid, 27 ans
Jaki , chan ,50 ans
ترجمة تعبير Compiler une expression
إذا كان عليك استخدام نفس التعبير
عدة مرات (على سبيل المثال في حلقة) ، فيمكنك تجميعه للحصول على الأداء.
>>> mails = [" mimouni@gmail.com ", "mimouni@gmail.ca", "8@gmail.com", "@gmail.com", "mimouni@gmail " ]
>>> for mail in mails :
... if regex.match(mail)
is not None:
...
print "cette adresse : %s est incorrecte" % mail
... else:
...
print (" mail Erreur : %s
est incorrecte" % mail
...
Cette adresse : mimouni@gmail.com est incorrecte
mail Erreur: mimouni@gmail.ca est incorrecte
Cette mail : 8@gmail.com est correcte
mail Erreur : @gmail.com
est incorrecte
Erreur ce mail : mimouni@gmail est incorrecte
تمرين التوليف: إنشاء تعبير يتعرف
على بريد إلكتروني Synthèse exercice: créer une
expression qui reconnait un mail
في العديد من البرامج التعليمية ،
يتم استخدام حالة عنوان البريد الإلكتروني نظرا لأنه غالبا ما يستخدمه المطورون
ومعقد / كامل للغاية
عندما تبدأ في كتابة تعبير عادي ،
ليس عليك أن تكون طموحا للغاية ، عليك دائما أن تبدأ صغيرا ، وأن تبني لبنة لبنة.
وضعنا المشاهد:
# coding: utf - 8
import re
string = "TESTE"
regexp = r"(TESTE)"
if re.match(regexp, string) is not None:
print ("TRUE")
else:
print
"FALSE"
print re.search( regexp , string ).groups( )
إذا قمت بتشغيل هذا البرنامج النصي
، عرض TRUE و "TEST". هذا يجعل من الممكن عدم البدء من الصفر. الفكرة
هي متابعة تطور تعبيرنا المعتاد خطوة بخطوة.
يبدو عنوان البريد الإلكتروني
بالجملة هكذا aaa @ aaa.COM
لنبدأ من البداية ، ابحث عن aaa @ ، يمكن ترجمة هذا ك ^ [a- z0 - 9 ._- ] + @
# coding: utf - 8
import re
string = " mimouni@gmail.com "
regexp = r "(^[a- z0 -9. _- ]+ @ ) "
if re.match( regexp , string ) is not None:
print ("true
")
else:
print ("false
")
print re.search(regexp, string).groups()
إذا قمت بتشغيل هذا البرنامج النصي
، عرض TRUE و " mimounir@ ". نحن على الطريق الصحيح! دعنا نستمر مع [ a -z0 -9] + \ .[ ( com| en)] + ثم دعونا نختبر .
# coding: utf - 8
import re
string = "mimouni@gmail.com"
if re.match(regexp, string) is not None:
print ("
true ")
else:
print ("
false ")
print re.search( regexp , string ).groups( )
وفويلا ، يجب أن تكون النتيجة
جيدة. يمكنك إزالة parantheses التي تعمل كالتقاط التعبير .
تعليقات
إرسال تعليق