البرمجة

مطابقة القوائم المتزايدة باستخدام Regex

باستخدام تعبيرات العبارات النمطية (Regex)، يمكننا بناء نمط يتوافق مع القوائم التي تحتوي على أرقام صحيحة معزولة مفصولة بفواصل، حيث يزيد كل عنصر عن العنصر السابق بمقدار واحد. للقيام بذلك، يمكن استخدام التالي:

regex
^(0|([1-9]\d*))(,(?=\1$)|,(?=\1(?!$))(0|([1-9]\d*)))?$

الآن، سأشرح هذا النمط خطوة بخطوة:

  1. ^ يعني بداية السلسلة.
  2. (0|([1-9]\d*)) تحدد مجموعة من الأرقام. إما أن يكون الرقم صفر (0)، أو رقم صحيح يبدأ بغير صفر (1-9) ويتبعه أي عدد من الأرقام الصحيحة (0-9).
  3. (,?((?=\1$)(0|([1-9]\d*))))? يحدد الفاصلة والعدد الذي يأتي بعدها إذا كان هناك. يحتوي هذا الجزء على علامة فاصلة متبوعة بـ:
    • (?=\1$) ضمنية تتأكد من أن العدد اللاحق هو الرقم التالي في السلسلة. يتم ذلك عن طريق المطابقة للعدد السابق (الذي تم تخزينه في \1) مع نهاية السلسلة.
    • (0|([1-9]\d*)) تعيين آخر للأرقام كما هو مذكور أعلاه.

بهذا النمط، يمكن استبعاد القوائم التي لا تتوافق مع الزيادة التسلسلية للأرقام. والآن بعد شرح النمط، يمكنك استخدامه في برمجتك أو تطبيقه في أي سياق يتطلب مطابقة القوائم المتزايدة بأرقام صحيحة.

المزيد من المعلومات

بالطبع، سأكمل المقال بالتعمق في شرح كيفية فهم واستخدام هذا النمط في لغة تعبيرات العبارات النمطية (Regex) لمطابقة القوائم التي تتزايد بأرقام صحيحة.

فهم النمط:

  1. ^ يعني بداية السلسلة.
  2. (0|([1-9]\d*)) تحدد مجموعة من الأرقام. إما أن يكون الرقم صفر (0)، أو رقم صحيح يبدأ بغير صفر (1-9) ويتبعه أي عدد من الأرقام الصحيحة (0-9).
  3. (,?((?=\1$)(0|([1-9]\d*))))? يحدد الفاصلة والعدد الذي يأتي بعدها إذا كان هناك. يحتوي هذا الجزء على علامة فاصلة متبوعة بـ:
    • (?=\1$) ضمنية تتأكد من أن العدد اللاحق هو الرقم التالي في السلسلة. يتم ذلك عن طريق المطابقة للعدد السابق (الذي تم تخزينه في \1) مع نهاية السلسلة.
    • (0|([1-9]\d*)) تعيين آخر للأرقام كما هو مذكور أعلاه.
  4. $ يعني نهاية السلسلة.

كيفية استخدام النمط:

يمكن استخدام هذا النمط في أي برنامج أو محرر يدعم تطبيق تعابير العبارات النمطية مثل Python باستخدام مكتبة re، أو في محرر نصوص متقدم مثل Sublime Text أو Visual Studio Code.

قد يكون استخدام النمط كما يلي في Python:

python
import re pattern = r"^(0|([1-9]\d*))(,(?=\1$)|,(?=\1(?!$))(0|([1-9]\d*)))?$" lists = [ "0,1,2,3", "8,9,10,11", "1999,2000,2001", "99,100,101", "42", "3,2,1", "1,2,4", "10,11,13" ] for lst in lists: if re.match(pattern, lst): print(f"{lst}: Matches") else: print(f"{lst}: Does not match")

ختامًا:

باستخدام هذا النمط، يمكنك بسهولة مطابقة القوائم التي تتزايد بأرقام صحيحة، مما يسهل عملية فحص البيانات المدخلة وضمان صحتها وتمييزها عن البيانات التي لا تتبع نفس الزيادة التسلسلية. تذكر دائمًا أن فهم وتعديل تعابير العبارات النمطية يتطلب ممارسة واستكشاف مستمر للوظائف المختلفة التي توفرها.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

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