يقدم تحدي من Learning Learning Lab التابع لجامعة تريست (إيطاليا) حل 12 مشكلة ، ويختلف مستوى المهام بشكل كبير - من السهل إلى الصعب.
بالطبع ، يمكن أن يكون هناك أكثر من حل ، ولا تغطي حالات الاختبار في المشكلة جميع الخيارات. ومع ذلك ، إذا حصلت على 100 ٪ ، فتهانينا! مرت الاختبار.
المفسد: في بعض المهام (خاصة الخفيفة منها) ، فإن التلميح هو الحل العملي.
المهمة 1 - العثور على الأرقام
هناك نص يحتوي على أرقام ، تحتاج إلى العثور على جميع الأرقام.
الصعوبة: فائقة سهلة.
مساعدةتحتاج إلى استخدام حرف أرقام وكمية مضاعف.
قرار\ د +
"[0-9] +" هو القرار الصحيح أيضًا.
حل تحليل- "\ d" أو "[0-9]" - أي حرف مفرد من 0 إلى 9.
- "+" - يُسمح بحرف واحد أو أكثر.
المهمة 2 - العثور على عناوين لجنة الهدنة العسكرية
هناك نص يحتوي على عناوين ماك ، تحتاج إلى العثور عليها.
الصعوبة: سهلة.
مساعدةتحتاج إلى استخدام حرف يعني أي حرف من أحرف أو أرقام ونقطتين للفصل ومحدِّد الكمي.
قرار\ w {2}: \ w {2}: \ w {2}: \ w {2}: \ w {2}: \ w {2}
"+" بدلاً من "{2}" هو القرار الصحيح أيضًا ، وإن لم يكن دقيقًا تمامًا.
حل تحليل- "\ w" هو أي حرف في الأبجدية أو أي رقم.
- "{2}" - يُسمح بحرفين فقط.
أفضل حللاحظ أولئك الذين لديهم دراية بعنوان mac أن عنوان mac مكتوب بترميز ست عشري. وفي الحل السابق ، تم استخدام علامة \ w ، مما يعني أي حرف من الأحرف الأبجدية وجميع الأرقام. أوافق ، ربما هذا غير ضروري ، لكن يمكنك أن تأخذ ذلك في الاعتبار ، وفي الوقت نفسه تقلل من الانتظام.
([\ da-f] {2} :) {5} [\ da-f] {2}
حل تحليل- "\ d" هو أي رقم واحد ، "af" عبارة عن نطاق من a إلى f. في المجموع ، لدينا مجموعة أحرف صالحة 0123456789abcdef - أي ، الرمز السداسي عشري. "{2}" - أي حرفين من مجموعة الأحرف هذه.
- "([\ da-f] {2} :)" {5} - يُسمح بتكرار حرفين + عشري نقطتين تمامًا 5 مرات.
- وفي نهاية "[\ da-f] {2}" - أي حرفين من مجموعة عرافة
المهمة 3 - العثور على عناوين بروتوكول نقل الملفات
هناك نص مع عناوين بروتوكول نقل الملفات ، تحتاج إلى العثور عليها.
الصعوبة: سهلة.
مساعدةيجب أن تبدأ بـ ftp: // ثم تسرد الأحرف الصحيحة في العنوان ، دون أن تنسى الكمي المضاعف.
قرارftp: \ / \ / [\ w \ d -_. \ /] +
حل تحليل- "\ /" - الهروب العادي للحرف "/".
- داخل الأقواس المربعة عبارة عن تعداد من الأحرف الصالحة ، أي أي حرف في الأبجدية أو أي رقم ، واصلة ، شرطة سفلية ، فترة أو شرطة مائلة (إذا كان هناك أحرف أخرى في الاسم ، يمكنك إضافتها).
المهمة 4 - العثور على القالب
هناك نوع من الملفات المنسقة تحتاج فيها إلى العثور على جميع الأسطر التي تطابق النموذج $ أي أحرف $.
الصعوبة: سهلة.
مساعدةتحتاج إلى استخدام الهروب من الحرف المحجوز ، وحرف أي حرف ، ومحددات التعددية ، والكسل.
قرارمهمة شائعة ، لكنها تتطلب معرفة أفضل قليلاً بالنظامين.
\\ $. +؟ \\ $
حل تحليل- "\\ $" هو الفرز بالدولار.
- ". +" - أي عدد من أي أحرف ، "؟" - إزالة الجشع.
المهمة 5 - العثور على عناوين بروتوكول الإنترنت
البحث عن عناوين IP من النص.
الصعوبة: سهلة.
مساعدةمشابهة جدا للمهمة الثانية.
قرار\ d + \. \ d + \. \ d + \. \ d +
إذا بدلاً من "+" لقد كتبت "{1،3}" ، تكون قد انتهيت.
حل تحليل- "\ d" هو أي رقم واحد ،
- "+" - أي عدد من الأحرف ، "{1،3}" - تقييد صارم على عدد الأحرف (من 1 إلى 3).
أفضل حلعنوان IP ليس مجرد أرقام ، ولكنه أرقام من 0 إلى 255.
\ b ((\ d | [1-9] \ d | 1 \ d {2} | 2 [0-4] \ d | 25 [0-5]) \.) {3} (\ d | [1 -9] \ d | 1 \ d {2} | 2 [0-4] \ d | 25 [0-5]) \ b
حل تحليللتحديد النطاق من 0 إلى 255 ، سيتعين عليك تجربة القليل:
- "\ d" هو رقم من 0 إلى 9
- "[1-9] \ d" - رقم من 10 إلى 99
- "1 \ d {2}" - رقم من 100 إلى 199
- "2 [0-4] \ d" - رقم من 200 إلى 249
- "25 [0-5]" - تشيلسو من 250 إلى 255
بعد ذلك ، نسمح بتكرار نمط الأرقام من 0 إلى 255 تمامًا 3 مرات:
- "(\ d | [1-9] \ d | 1 \ d {2} | 2 [0-4] \ d | 25 [0-5]).) {3}" - داخل النقطة ، لأنها أيضًا كرر 3 مرات وفي النهاية نفس مجموعة الأرقام ، ولكن بدون نقطة.
- في النهاية والبداية نضيف رمز الحدود للكلمة "\ b" - مطلوبًا لإزالة هذا النص "1172.30.42.109" من الإدخال (أوافق ، هذا غير مرجح وربما غير ضروري).
المهمة 6 - مرساة
اسحب علامة href من مستند html.
الصعوبة: متوسطة.
مساعدةاستخدم "أي حرف باستثناء" و "أو" لكل قوس.
قرارhref = ("[^"] + "| '[^'] + ')
حل تحليل- "- بدء البحث مع اقتباس مزدوج.
- "[^"] + "- أي حرف على الإطلاق باستثناء اقتباس مزدوج.
- ننتهي مع اقتباس مزدوج.
نضع كل هذا بين قوسين ، نلحق العلامة أو - "|" وكرر نفس الشيء لعروض الأسعار الفردية.
المهمة 7 - الروابط
في أي نص تجد جميع الروابط. المهمة معقدة بسبب حقيقة أنه لا يكفي العثور على الرابط فحسب ، بل يجب عليك التخلص من الأحرف غير الصالحة من النهاية.
الصعوبة: صعبة.
مساعدةتحتاج إلى البدء بـ http ، واستخدام "أي حرف باستثناء" وإنهاء البحث بحرف صالح.
قرارhttp: \ / \ / ([^> \ s] +) [\ w \ /]
لا توجد روابط https في المهمة ، ولكن يمكنك أخذ ذلك في الاعتبار عن طريق إضافة "s؟" بعد المتشعب
حل تحليل- "[^> \ s] +" ابحث عن أي أحرف باستثناء الحرف ">" وحرف المسافة. في الواقع ، يمكنك قراءة مثل هذا "نذهب حتى نرى أحد هذه الرموز."
- "[\ w \ /]" هو محدد يسمح للرابط بأن ينتهي بحرف لاتيني فقط أو شرطة مائلة.
ونتيجة لذلك - نبدأ بـ http: // ، ثم أي حرف باستثناء الأحرف "<" أو المسافة ، ولكن في النهاية مطلوب الحرف أو الشرطة المائلة اللاتينية.
- اضافية "ليالي" في "https؟" ما عليك سوى السماح بـ "http: //" و "https: //".
المهمة 8 - الرؤوس
في HTML ، يمثل الرأس أي علامة من أرقام h +.
الصعوبة: متوسطة.
مساعدةابدأ بالرقم h + digit + أي حرف أو غيابه.
قراربسيط جدا:
<h \ d. *>. * <\ / h \ d. *>
حل تحليل- "h \ d" - هنا نقول أنه بعد الحرف يجب أن يذهب بالضرورة "\ d".
- ثم ". *" يمكن أن يذهب أي عدد من الأحرف أو لا شيء يمكن أن يذهب.
أفضل حلبعد h يأتي رقمًا ، وتنص مواصفات html على أن الأرقام من 1 إلى 6 صالحة ، ولا يمكن إغلاق العلامة نفسها بأي شيء آخر غير الأقواس المثلثة. لذلك ، سيكون هذا الحل أكثر دقة:
<h [1-6] [^>] *>. +؟ <\ / h [1-6]>
صحيح ، هناك خطأ يسمح لك بفتح العلامة برقم واحد وإغلاق الآخر. وبالتالي ، سيكون الحل الأكثر دقة هو استخدام الروابط: "<h ([1-6]) [^>] *>. +؟ <\ / H \ 1>". هذا لا يعني أن الاختبار ليس حساسًا لحالة الأحرف.
حل تحليل- "h [1-6]" - هنا نقول أنه بعد "h" يجب أن ينتقل العدد من 1 إلى 6.
- "[^>] *" - قد يستمر أي حرف باستثناء ">" ، أو قد لا يستمر.
بشكل منفصل ، حول الإضافة:
- بتعبير "(h [1-6])" بين قوسين ، نقوم بإنشاء مجموعة في الرقم 1.
- علاوة على ذلك ، باستخدام الرابط للمجموعة الأولى "\ 1" نتحدث عن ما نريد أن نراه في نهاية نفسه ، ح مع نفس العدد كما في البداية.
المهمة 9 - الهواتف
في النص المجاني وجدت في جميع الهواتف في أشكال مختلفة.
الصعوبة: صعبة.
مساعدةمن الضروري استخدام علامة وجود رمز أو عدم وجوده ، وكمية لتحديد عدد الأرقام ، وإنشاء مجموعة أحرف. ممكن تصميم أو.
قرار\ (؟ \ d {3} [\). \ / -] {1،2} \ d {3} [-.] \ D {4}
سوف يعمل ، لكنه يسمح بحرفين بعد أول ثلاثة أرقام - إنه لأمر جيد إذا كان هناك قوس إغلاق ومسافة بعده ، لكنه سيكون سيئًا إذا كان هناك واصلان. لذلك ، يوجد حل أكثر دقة قليلاً: "\ (؟ \ D {3} (\)؟ | [. \ / -]) \ d {3} [-.] \ D {4}"
حل تحليل- "\ (؟" - نشير إلى إمكانية وجود الرمز "(" أو غيابه ، فنحن نحمي لأنه رمز محجوز.
- "\ d {3}" - الأرقام مع تقييد 3 فقط.
- الأحرف الإضافية "[\). \ / -] {1،2}" ممكنة - شرطة مائلة ، وإغلاق قوس ، وفترة ، ومسافة ، شرطة مائلة للخلف ووصلة. {1،2} - يقول أن هذه الأحرف يمكن أن تكون 1 أو 2. على سبيل المثال ، قوس الإغلاق والمسافة بعدها.
- كذلك بالضرورة "[-.]" - واصلة أو فترة.
- و "\ d {4}" هي الأرقام الأربعة في النهاية.
المهمة 10 - المؤلفون
هناك نمط معين يحتوي على عناصر ، ابحث عن جميع المؤلفين من حقل المؤلف.
الصعوبة: صعبة للغاية.
مساعدةمن الضروري الاعتماد على حقيقة أن جميع أسماء المؤلفين تبدأ بحرف كبير وتتم كتابتها بنمط.
قرار[AZ] [A-Za-z - '] + ، [AZ] (\ {\\ "\ w \})؟ [A-za-z -'] * ([AZ] [A-Za-z- '] *)؟
هذا الحل صحيح ، لكنه يحتوي على ناقص. لقد تجولنا حول "{\" u} مع "عكاز" ({\ "\ w})؟" وأساسيًا أنه قابل للتطبيق إذا وضعت العكاز أيضًا في أجزاء أخرى من أسماء المؤلفين.
في أي حال ، إذا كنت قادرًا على حل هذه المشكلة بطريقة أو بأخرى ، فهذا رائع جدًا!
حل تحليل- "[AZ] [A-Za-z - '] +" - نحن نبحث عن كلمة تبدأ بالضرورة بحرف كبير ، ثم تحتوي على أي حرف أبجدي أو واصلة أو علامة اقتباس أحادية.
- علاوة على ذلك ، كل شيء مماثل تمامًا للأعلى قليلاً ، لكن هنا بيننا "({\" \ w})؟ "- إنه مجرد عكاز يسمح لك بتجاوز الدرع. هذا يعني أن قطعة من" {\ "u}" يمكن أن تكون موجودة أو ليكون غائبا.
- ثم مرة أخرى ، بالضبط نفس الشيء كما في الحالة الأولى "([AZ] [A-Za-z - '] *)؟" ، الإشعار مع استثناء أن هذا التعبير ملفوف في مجموعة وهناك "؟" وهذا يعني عدم ملزمة هذا الشرط.
يعد تعداد PS [A-Za-z] هنا إجراءً ضروريًا ، لأنه لا توجد معدلات في الاختبار.
أفضل حلهناك حل أكثر إحكاما وبساطة يتيح لك التخلي عن العكاز أعلاه:
[AZ] \ S + ، [AZ] \ S * ([AZ] [\ S] *)؟ \ B
حل تحليل- "[AZ] \ S + ،" - أولاً ، بالضرورة ، الحرف الكبير "[AZ]" ، ثم أي عدد من الأحرف غير البيضاء "\ S +" إلى الفاصلة المنقوطة "،".
- علاوة على ذلك ، نفس الشيء تقريبًا "[AZ] \ S *" - البداية هي بالضرورة بحرف كبير ، ثم أي حرف غير أبيض إلى حد الكلمة "\ b".
- "([AZ] [\ S] *)؟" - وبينهم نفسه ، ولكن ليس مجموعة إلزامية لاسم الأوسط.
المهمة 11 - محتوى الرأس
تمامًا كما هو الحال في المهمة 8 ، ولكن عليك أن تجد ليس الرؤوس نفسها ، ولكن محتوياتها.
الصعوبة: صعبة.
مساعدةالمهمة مماثلة للمهمة 8. ليس من الصعب أن تعرف إذا نظرت إلى الأمام والخلف. لديه حل مع النظر إلى الوراء ودون النظر إلى الوراء.
قراردون النظر إلى الوراء:
([\ w] * <[^ h]. + | [^ <>] +) (؟ = <\ / h \ d>)
حل تحليل- "([\ w] * <[^ h]. + | [^ <>] +)" - هناك خياران لكيفية بدء تشغيل محتويات الرأس. الأول هو وضع علامة داخل "[\ w] * <[^ h]. +" - في الوقت نفسه ، تحتاج إلى التأكد من أنها ليست علامة h وتراعي أنه قد يكون هناك نص قبل العلامة. الخيار الثاني هو نص بدون علامات "[^ <>] +" ، أي أي أحرف غير فتح وإغلاق العلامة.
- "(؟ = <\ / h \ d>)" - التطلع إلى الأمام ، حيث يجب أن يكون هناك علامة إغلاق h.
إذا نظرنا إلى الوراء:
(؟ <= <h [^>] +>). +؟ (؟ = <\ / h \ d>)
بالإضافة إلى ذلك ، يمكنك أن تأخذ في الاعتبار جميع التعليقات على الحل 8 من المشكلة.
حل تحليل- "(؟ <= <h [^>] +>)" - الظهور بداخله يجب أن يكون علامة h.
- "(؟ = <\ / h \ d>)" - التطلع إلى الأمام ، حيث يجب أن يكون هناك علامة إغلاق h.
المهمة 12 - قائمة المؤلفين
المهمة تشبه المهمة العاشرة ، لكن في رأيي أسهل.
الصعوبة: صعبة.
مساعدةجميع المبادئ الأساسية للمهام 10 ، ولكن عليك أن تنظر في بداية السطر. الحل الذي أعرفه يستخدم التطفل.
قرار(؟ <= ^ \ d + \.) [AZ] [\ w] + ، [AZ] [\ w \.] +
حل تحليل- "(؟ <= ^ \ d +.)" - إذا نظرنا إلى الوراء حيث يجب أن يكون لديك أي عدد من الأرقام إلى النقطة مع وجود مسافة من سطر جديد.
- "[AZ] [\ w] + ،" - قم أيضًا بإضافة أي كلمة من حرف كبير إلى فاصلة منقوطة ومرة أخرى "[AZ] [\ w.] +".
أو ببساطة ، هذا:
(؟ <= ^ \ d + \.) [^ ،] + ، [^ ،:] +
حل تحليل- "(؟ <= ^ \ d +.)" - إذا نظرنا إلى الوراء حيث يجب أن يكون لديك أي عدد من الأرقام إلى النقطة مع وجود مسافة من سطر جديد.
- "[^ ،] + ،" - أي عدد من الأحرف إلى الفاصلة + فاصلة.
- "[^ ،:] +" - أي عدد من الأحرف قبل الفاصلة أو النقطتين.