البرمجة

تعبير منتظم لتحليل طلبات HTTP بواسطة Python

لإيجاد تعبير منتظم يطابق النص “192.168.71.1 GET HTTP/1.0 /test/abc” بما في ذلك الفراغات بين العناصر، يمكنك استخدام التعبير التالي:

regex
^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s(GET)\s(HTTP\/1\.0)\s(\/test\/abc)$

هذا التعبير يعتمد على فرضيات معينة:

  • يحتوي النص على عنوان IP مكون من أربعة أجزاء مفصولة بنقاط.
  • يتبع العنوان النص “GET”.
  • يتبع “GET” النص “HTTP/1.0”.
  • يتبع “HTTP/1.0” المسار “/test/abc”.

إذا كانت هذه الفرضيات تنطبق على النص الذي تبحث عن تعبير منتظم له، فإن التعبير المذكور أعلاه يجب أن يكون صحيحاً. ومع ذلك، إذا كانت هناك تباينات في تنسيق النص الفعلي، قد تحتاج إلى تعديل التعبير ليناسب تلك التباينات.

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

بالتأكيد، هنا بعض المعلومات الإضافية حول تعبير الregex الذي ذكرته:

  1. ^: يرمز إلى بداية السلسلة، مما يعني أن النص يجب أن يبدأ بالتنسيق الذي يأتي بعد هذا الرمز.

  2. (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}): هذا الجزء يستخدم للتعرف على عنوان IP، حيث:

    • \d{1,3}: يطابق أي عدد يتكون من رقم واحد إلى ثلاثة أرقام.
    • \.: يستخدم للتطابق مع النقطة بين أجزاء العنوان.
    • الفقرات السابقة تكرر هذا النمط أربع مرات ليتم تطابقه مع عنوان IP كامل.
  3. \s: يطابق أي فراغ بيضاء (مسافة، تاب، إلخ).

  4. (GET): يطابق النص “GET”.

  5. (HTTP\/1\.0): يطابق النص “HTTP/1.0″، ويستخدم \ للتعامل مع النقطة التي تعتبر في regex حرف خاص.

  6. (\/test\/abc): يطابق المسار “/test/abc”، حيث يستخدم \/ لتحديد أن / هي جزء من النص وليس رمزاً خاصاً في regex.

  7. $: يرمز إلى نهاية السلسلة، مما يعني أن النص يجب أن ينتهي بالتنسيق الذي يأتي قبل هذا الرمز.

هذا التعبير يكون مناسباً للنص الذي يتبع بالضبط تنسيق “IP GET HTTP/1.0 /test/abc”، وقد تحتاج إلى تعديله بشكل بسيط إذا كان هناك أي تباين في التنسيق الفعلي للنص.

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