البرمجة

كيفية فحص الفروق بين أرقام الهواتف باستخدام Regex

في البداية، يجب علينا فهم البنية الأساسية لأرقام الهواتف وكيفية تمثيلها. تتألف أرقام الهواتف عادةً من رمز البلد، ومن ثم رمز المنطقة (إذا كانت مطلوبة)، ومن ثم رقم الهاتف نفسه. يمكن أن يحتوي رقم الهاتف على أي عدد من الأرقام. بما أننا نرغب في مطابقة الأرقام التي تختلف بأكثر من رقم واحد، سنستخدم التعبيرات النمطية (Regex) لتحديد نمط محدد.

في هذه الحالة، يمكننا استخدام العمليات التالية:

  1. مطابقة رمز البلد ورمز المنطقة إذا كانوا موجودين.
  2. مطابقة الأرقام الفردية في الرقم.
  3. التأكد من أن الفارق بين الأرقام في الأرقام المطابقة لا يزيد عن واحد.

الآن، لنقم بإنشاء التعبير النمطي لذلك في بايثون باستخدام مكتبة re:

python
import re def is_similar_phone_number(phone1, phone2): # Remove non-digit characters from phone numbers phone1_digits = re.sub(r'\D', '', phone1) phone2_digits = re.sub(r'\D', '', phone2) # Check if lengths differ by more than 1 if abs(len(phone1_digits) - len(phone2_digits)) > 1: return False # Check if country code and area code match if phone1_digits[:2] != phone2_digits[:2]: return False # Calculate number of differing digits diff_count = sum(c1 != c2 for c1, c2 in zip(phone1_digits, phone2_digits)) # Return True if differing digits are at most 1 return diff_count <= 1 # Example usage phone1 = "+31612345678" phone2 = "+31612245678" phone3 = "+31611145678" print(is_similar_phone_number(phone1, phone2)) # Should print True print(is_similar_phone_number(phone1, phone3)) # Should print False

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

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

بالطبع، سنقوم بتوسيع المقال لشرح المبادئ والتفاصيل بشكل أكبر.

فهم بنية أرقام الهواتف:

أرقام الهواتف تتبع تنسيقًا محددًا يختلف من دولة إلى أخرى، ولكن عمومًا تتألف من عدة أجزاء رئيسية:

  1. رمز البلد: يُمثل رمزًا يدل على الدولة التي تتبع إليها الهاتف، مثل +1 للولايات المتحدة و+44 للمملكة المتحدة.
  2. رمز المنطقة (اختياري): يُستخدم في بعض البلدان لتحديد المنطقة الجغرافية التي تتبع إليها الهاتف داخل البلد.
  3. رقم الهاتف: الجزء الأساسي للرقم، ويحتوي على مجموعة من الأرقام.

البحث عن الأرقام المتشابهة:

للبحث عن الأرقام التي تختلف بأكثر من رقم واحد، يمكننا استخدام التعبيرات النمطية (Regex) لتحديد نمط محدد. في السياق الحالي، نحتاج إلى التركيز على مطابقة الأرقام الفردية والتحقق من أن الفارق بين الأرقام في الأرقام المطابقة لا يتجاوز رقمًا معينًا.

كيف يعمل التعبير النمطي:

  1. إزالة الأحرف غير الرقمية: نبدأ بإزالة جميع الأحرف غير الرقمية من الأرقام، مما يسمح لنا بالمقارنة بشكل فعال بين الأرقام.
  2. التحقق من رمز البلد ورمز المنطقة (إذا كان موجودًا): نتأكد من أن رمز البلد ورمز المنطقة (إذا كان موجودًا) متطابقين بين الأرقام.
  3. حساب الفارق بين الأرقام: نستخدم الدالة zip() في بايثون لمطابقة الأرقام الفردية في الأرقام المطابقة، ثم نحسب عدد الأرقام التي تختلف بين الأرقام المطابقة.
  4. التحقق من الفارق النهائي: نتحقق من أن الفارق بين الأرقام في الأرقام المطابقة لا يتجاوز رقمًا محددًا، وفي هذه الحالة يكون الرقم هو واحد.

الاستخدام العملي:

بعد تحديد التعبير النمطي، يمكن استخدامه في العديد من السيناريوهات، مثل التحقق من صحة أرقام الهواتف في قواعد البيانات أو تحديد الأرقام المشابهة لإجراء تحليلات في المعلومات.

الختام:

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

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

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

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

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