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

الصفحات

التعبيرات العادية في بيثون Les expressions régulières en python

التعبيرات العادية في بايثون 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 التي تعمل كالتقاط التعبير .



الصفحة الرئيسية >> إنشاء قراءة والكتابة ملافات في البيثون Creer lire et la écrire dans des fichiers en python      

تعليقات