السلاسل و التعابير المميزة في بايثون

السلاسل المميزة في 

السلاسل المميزة ( Special Sequences ) عبارة عن مجموعة أحرف يصبح لها معنى خاص حين يتم وضعها بعد الرمز / و لقد ذكرناهم في الجدول التالي.

الرمز إستخدامه مثال
\w يطابق أي حرف بين a-z أو A-Z أو أي رقم بين 0-9 أو الرمز _.
هذا الرمز يعتبر إختصار للتعبير النمطي [a-zA-Z0-9_].
شاهد المثال »
\W يطابق أي أحرف ليس بين a-z أو A-Z أو رقم أو الرمز _.
هذا الرمز يعتبر إختصار للتعبير النمطي [^a-zA-Z0-9_].
شاهد المثال »
\d يطابق أي حرف يمثل رقم بين 0 و 9.
هذا الرمز يعتبر إختصار للتعبير النمطي [0-9].
شاهد المثال »
\D يطابق أي أحرف لا يمثل رقم بين 0 و 9.
هذا الرمز يعتبر إختصار للتعبير النمطي [^0-9].
شاهد المثال »
\s يطابق أي حرف يمثل مسافة فارغة.
هذا الرمز يعتبر إختصار للتعبير النمطي [ \t\n\r\f\v].
شاهد المثال »
\S يطابق أي حرف لا يمثل مسافة فارغة.
هذا الرمز يعتبر إختصار للتعبير النمطي [^ \t\n\r\f\v].
شاهد المثال »
\Z يطابق أي سلسلة أحرف نمررها قبله مع الأحرف الموجودة في نهاية النص. شاهد المثال »
\A يطابق أي سلسلة أحرف نمررها بعده مع الأحرف الموجودة في بداية النص. شاهد المثال »
\b يطابق أول أو آخر أي سلسلة أحرف تحتوي على أحرف بين a-z أو A-Z أو أي رقم بين 0-9 أو الرمز _.
  • في حال تم وضع التعبير في آخر سلسلة الأحرف فإنه يبحث عن تطابق موجود في آخر كل سلسلة أحرف غير مقطوعة بمسافة فارغة في النص.

  • في حال تم وضع التعبير في أول سلسلة الأحرف فإنه يبحث عن تطابق موجود في أول كل سلسلة أحرف غير مقطوعة بمسافة فارغة في النص.

شاهد المثال »
\B لا يطابق أول أو آخر أي سلسلة أحرف تحتوي على أحرف بين a-z أو A-Z أو أي رقم بين 0-9 أو الرمز _.
  • في حال تم وضع التعبير في آخر سلسلة الأحرف فإنه يبحث عن تطابق غير موجود قبل آخر كل سلسلة أحرف غير مقطوعة بمسافة فارغة في النص.

  • في حال تم وضع التعبير في أول سلسلة الأحرف فإنه يبحث عن تطابق غير موجود بعد أول كل سلسلة أحرف غير مقطوعة بمسافة فارغة في النص.

شاهد المثال »


إنتبه

الرمز \ يسمى Backslash, و هو Escape Character أي حرف له معنى خاص في بايثون كما لاحظت في الجدول السابق.
في حال كنت تريد البحث عن الحرف \ نفسه, فعليك معرفة أن مفسّر لغة بايثون يرا كل \ محرفين, أي يراه \\.
و بالتالي سيكون عليك وضع \\\\ كلما كنت تقصد \ حتى يفهم مفسر لغة بايثون أنك تريد البحث عن هذا الحرف و لا تقصد شيء آخر.

إذا لم ترد فعل ذلك فيمكنك ببساطة إعتماد أسلوب يقال له Raw String, أي أن تضع الحرف r قبل نص التعبير النمطي مباشرةً كالتالي r"\Bea".
طبعاً كنت تستطيع كتابة التعبير السابق هكذا أيضاً "\\Bea".

في النهاية, ننصحك باعتماد أسلوب الـ Raw String لأنه أسهل و أقل تعقيداً.

 التعبير النمطي \w في بايثون

تذكر: التعبير \w يطابق أي حرف بين a-z أو A-Z أو أي رقم بين 0-9 أو الرمز _.
و هذا الرمز يعتبر إختصار للتعبير النمطي [a-zA-Z0-9_].


مثال

Test.py
                    # حتى نستطيع إستخدام الدوال الموجودة فيه re هنا قمنا بتضمين الموديول
      import re

      # هنا قمنا بتعريف النص الذي سنبحث فيه بعد قليل
      txt = "Python 3 is amazing"

      # list في النهاية سترجع نتيجة البحث ككائن نوعه .'Z' و 'A' و بين ,'z' و 'a' تبحث في النص عن كل حرف أبجدي بين findall() الدالة
      result = re.findall("\w", txt)

      # غير فارغ, سيتم طباعة ما يحتويه كما هو list يمثل كائن result بما أن
      if result:
      print(result)
      else:
      print("No match found!")
    

سنحصل على النتيجة التالية عند تشغيل الملف Test.

['P', 'y', 't', 'h', 'o', 'n', '3', 'i', 's', 'a', 'm', 'a', 'z', 'i', 'n', 'g']

 التعبير النمطي \W في بايثون

تذكر: التعبير \W يطابق أي أحرف ليس بين a-z أو A-Z أو رقم أو الرمز _.
و هذا الرمز يعتبر إختصار للتعبير النمطي [^a-zA-Z0-9_].


مثال

Test.py
                    # حتى نستطيع إستخدام الدوال الموجودة فيه re هنا قمنا بتضمين الموديول
      import re

      # هنا قمنا بتعريف النص الذي سنبحث فيه بعد قليل
      txt = "Python 3 is amazing"

      # list في النهاية سترجع نتيجة البحث ككائن نوعه .'Z' و 'A' و بين ,'z' و 'a' تبحث في النص عن كل حرف أبجدي بين findall() الدالة
      result = re.findall("\W", txt)

      # غير فارغ, سيتم طباعة ما يحتويه كما هو list يمثل كائن result بما أن
      if result:
      print(result)
      else:
      print("No match found!")
    

سنحصل على النتيجة التالية عند تشغيل الملف Test.

[' ', ' ', ' ']

 التعبير النمطي \d في بايثون

تذكر: التعبير \d يطابق أي حرف يمثل رقم بين 0 و 9.
و هذا الرمز يعتبر إختصار للتعبير النمطي [0-9].


مثال

Test.py
                    # حتى نستطيع إستخدام الدوال الموجودة فيه re هنا قمنا بتضمين الموديول
      import re

      # هنا قمنا بتعريف النص الذي سنبحث فيه بعد قليل
      txt = "Python 3"

      # list .ستبحث في النص عن كل حرف يمثل رقم بين '0' و '9'. في النهاية سترجع نتيجة البحث ككائن نوعه findall() الدالة
      result = re.findall("\d", txt)

      # غير فارغ, سيتم طباعة ما يحتويه كما هو list يمثل كائن result بما أن
      if result:
      print(result)
      else:
      print("No match found!")
    

سنحصل على النتيجة التالية عند تشغيل الملف Test.

['3']

 التعبير النمطي \D في بايثون

تذكر: التعبير \D يطابق أي أحرف لا يمثل رقم بين 0 و 9.
و هذا الرمز يعتبر إختصار للتعبير النمطي [^0-9].


مثال

Test.py
                    # حتى نستطيع إستخدام الدوال الموجودة فيه re هنا قمنا بتضمين الموديول
      import re

      # هنا قمنا بتعريف النص الذي سنبحث فيه بعد قليل
      txt = "Python 3"

      # list .ستبحث في النص عن كل حرف لا يمثل رقم بين '0' و '9'. في النهاية سترجع نتيجة البحث ككائن نوعه findall() الدالة
      result = re.findall("\D", txt)

      # غير فارغ, سيتم طباعة ما يحتويه كما هو list يمثل كائن result بما أن
      if result:
      print(result)
      else:
      print("No match found!")
    

سنحصل على النتيجة التالية عند تشغيل الملف Test.

['P', 'y', 't', 'h', 'o', 'n', ' ']

 التعبير النمطي \s في بايثون

تذكر: التعبير \s يطابق أي حرف يمثل مسافة فارغة.
و هذا الرمز يعتبر إختصار للتعبير النمطي [ \t\n\r\f\v].


مثال

Test.py
                    # حتى نستطيع إستخدام الدوال الموجودة فيه re هنا قمنا بتضمين الموديول
      import re

      # هنا قمنا بتعريف النص الذي سنبحث فيه بعد قليل
      txt = "Python 3"

      # list .ستبحث في النص عن كل حرف يمثل مسافة فارغة. في النهاية سترجع نتيجة البحث ككائن نوعه findall() الدالة
      result = re.findall("\s", txt)

      # غير فارغ, سيتم طباعة ما يحتويه كما هو list يمثل كائن result بما أن
      if result:
      print(result)
      else:
      print("No match found!")
    

سنحصل على النتيجة التالية عند تشغيل الملف Test.

[' ']

 التعبير النمطي \S في بايثون

تذكر: التعبير \S يطابق أي حرف لا يمثل مسافة فارغة.
و هذا الرمز يعتبر إختصار للتعبير النمطي [^ \t\n\r\f\v].


مثال

Test.py
                    # حتى نستطيع إستخدام الدوال الموجودة فيه re هنا قمنا بتضمين الموديول
      import re

      # هنا قمنا بتعريف النص الذي سنبحث فيه بعد قليل
      txt = "Python 3"

      # list .ستبحث في النص عن كل حرف لا يمثل مسافة فارغة. في النهاية سترجع نتيجة البحث ككائن نوعه findall() الدالة
      result = re.findall("\S", txt)

      # غير فارغ, سيتم طباعة ما يحتويه كما هو list يمثل كائن result بما أن
      if result:
      print(result)
      else:
      print("No match found!")
    

سنحصل على النتيجة التالية عند تشغيل الملف Test.

['P', 'y', 't', 'h', 'o', 'n', '3']

 التعبير النمطي \Z في بايثون

تذكر: التعبير \Z يطابق أي سلسلة أحرف نمررها قبله مع الأحرف الموجودة في نهاية النص.


مثال

Test.py
                    # حتى نستطيع إستخدام الدوال الموجودة فيه re هنا قمنا بتضمين الموديول
      import re

      # هنا قمنا بتعريف النص الذي سنبحث فيه بعد قليل
      txt = "Hello World"

      # None و في حال لم يكن كذلك ترجع Match في حال كان كذلك ترجع كائن .'ld' تبحث في النص لترى ما إن كان ينتهي بـ search() الدالة
      result = re.search("ld\Z", txt)

      # if سيتم تنفيذ أمر الطباعة الموضوع في الجملة Match يمثل كائن result بما أن
      if result:
      print('Match found!')
      else:
      print("No match found!")
    

سنحصل على النتيجة التالية عند تشغيل الملف Test.

Match found!

 التعبير النمطي \A في بايثون

تذكر: التعبير \A يطابق أي سلسلة أحرف نمررها بعده مع الأحرف الموجودة في بداية النص.


مثال

Test.py
                    # حتى نستطيع إستخدام الدوال الموجودة فيه re هنا قمنا بتضمين الموديول
      import re

      # هنا قمنا بتعريف النص الذي سنبحث فيه بعد قليل
      txt = "Hello World"

      # None و في حال لم يكن كذلك ترجع Match في حال كان كذلك ترجع كائن .'ld' تبحث في النص لترى ما إن كان ينتهي بـ search() الدالة
      result = re.search("\AHe", txt)

      # if سيتم تنفيذ أمر الطباعة الموضوع في الجملة Match يمثل كائن result بما أن
      if result:
      print('Match found!')
      else:
      print("No match found!")
    

سنحصل على النتيجة التالية عند تشغيل الملف Test.

Match found!

 التعبير النمطي \b في بايثون

تذكر: التعبير \b يطابق أول أو آخر أي سلسلة أحرف تحتوي على أحرف بين a-z أو A-Z أو أي رقم بين 0-9 أو الرمز _.

  • في حال تم وضع التعبير في آخر سلسلة الأحرف فإنه يبحث عن تطابق موجود في آخر كل سلسلة أحرف غير مقطوعة بمسافة فارغة في النص.

  • في حال تم وضع التعبير في أول سلسلة الأحرف فإنه يبحث عن تطابق موجود في أول كل سلسلة أحرف غير مقطوعة بمسافة فارغة في النص.


في المثال التالي سنضع الرمز \b في أول التعبير النمطي.
إنتبه يجب وضع الحرف r كما فعلنا قبل نص التعبير النمطي حتى يستطيع مفسر لغة بايثون أن يميز بين الرمز \b و الأحرف الموضوعة بضعه لأننا لا نريده أن يعامل الرمز \b كمعاملة الأحرف العادية.

المثال الأول

Test.py
                    # حتى نستطيع إستخدام الدوال الموجودة فيه re هنا قمنا بتضمين الموديول
      import re

      # هنا قمنا بتعريف النص الذي سنبحث فيه بعد قليل
      txt = "Python is an easy language to learn"

      # list في النهاية سترجع نتيجة البحث ككائن نوعه .'ea' ستبحث في النص عن  كل كلمة تبدأ بـ findall() الدالة
      result = re.findall(r"\bea", txt)

      # غير فارغ, سيتم طباعة ما يحتويه كما هو list يمثل كائن result بما أن
      if result:
      print(result)
      else:
      print("No match found!")
    

سنحصل على النتيجة التالية عند تشغيل الملف Test.

['ea']


في المثال التالي سنضع الرمز \b في آخر التعبير النمطي.
إنتبه يجب وضع الحرف r كما فعلنا قبل نص التعبير النمطي حتى يستطيع مفسر لغة بايثون أن يميز بين الرمز \b و الأحرف الموضوعة بضعه لأننا لا نريده أن يعامل الرمز \b كمعاملة الأحرف العادية.

المثال الثاني

Test.py
                    # حتى نستطيع إستخدام الدوال الموجودة فيه re هنا قمنا بتضمين الموديول
      import re

      # هنا قمنا بتعريف النص الذي سنبحث فيه بعد قليل
      txt = "Python is an easy language to learn"

      # list في النهاية سترجع نتيجة البحث ككائن نوعه .'n' ستبحث في النص عن  كل كلمة تنتهي بـ findall() الدالة
      result = re.findall(r"n\b", txt)

      # غير فارغ, سيتم طباعة ما يحتويه كما هو list يمثل كائن result بما أن
      if result:
      print(result)
      else:
      print("No match found!")
    

سنحصل على النتيجة التالية عند تشغيل الملف Test.

['n', 'n', 'n']

 التعبير النمطي \B في بايثون

تذكر: التعبير \B لا يطابق أول أو آخر أي سلسلة أحرف تحتوي على أحرف بين a-z أو A-Z أو أي رقم بين 0-9 أو الرمز _.

  • في حال تم وضع التعبير في آخر سلسلة الأحرف فإنه يبحث عن تطابق غير موجود قبل آخر كل سلسلة أحرف غير مقطوعة بمسافة فارغة في النص.

  • في حال تم وضع التعبير في أول سلسلة الأحرف فإنه يبحث عن تطابق غير موجود بعد أول كل سلسلة أحرف غير مقطوعة بمسافة فارغة في النص.


في المثال التالي سنضع الرمز \B في أول التعبير النمطي.
إنتبه يجب وضع الحرف r كما فعلنا قبل نص التعبير النمطي حتى يستطيع مفسر لغة بايثون أن يميز بين الرمز \B و الأحرف الموضوعة بضعه لأننا لا نريده أن يعامل الرمز \B كمعاملة الأحرف العادية.

المثال الأول

Test.py
                    # حتى نستطيع إستخدام الدوال الموجودة فيه re هنا قمنا بتضمين الموديول
      import re

      # هنا قمنا بتعريف النص الذي سنبحث فيه بعد قليل
      txt = "Python is an easy language to learn"

      # list لكنها لا تنتهي بهما. في النهاية سترجع نتيجة البحث ككائن نوعه 'ea' ستبحث في النص عن كل كلمة تحتوي على الحرفين findall() الدالة
      result = re.findall(r"\Bea", txt)

      # غير فارغ, سيتم طباعة ما يحتويه كما هو list يمثل كائن result بما أن
      if result:
      print(result)
      else:
      print("No match found!")
    

سنحصل على النتيجة التالية عند تشغيل الملف Test.

['ea']


في المثال التالي سنضع الرمز \B في آخر التعبير النمطي.
إنتبه يجب وضع الحرف r كما فعلنا قبل نص التعبير النمطي حتى يستطيع مفسر لغة بايثون أن يميز بين الرمز \B و الأحرف الموضوعة بضعه لأننا لا نريده أن يعامل الرمز \B كمعاملة الأحرف العادية.

المثال الثاني

Test.py
                    # حتى نستطيع إستخدام الدوال الموجودة فيه re هنا قمنا بتضمين الموديول
      import re

      # هنا قمنا بتعريف النص الذي سنبحث فيه بعد قليل
      txt = "Python is an easy language to learn"

      # list لكنها لا تنتهي به. في النهاية سترجع نتيجة البحث ككائن نوعه 'n' ستبحث في النص عن كل كلمة تحتوي على الحرف findall() الدالة
      result = re.findall(r"n\B", txt)

      # غير فارغ, سيتم طباعة ما يحتويه كما هو list يمثل كائن result بما أن
      if result:
      print(result)
      else:
      print("No match found!")
    

سنحصل على النتيجة التالية عند تشغيل الملف Test.

['n']
تعليقات