دروس الوحدة (4/4)
نظرة عامة في الممارسة العملية
دعونا نجمع الأشكال الأربعة من البحث معًا في سيناريوهات العالم الحقيقي. تتألق عمليات البحث عندما تحتاج إلى:
- استخرج قيمة بدون السياق الذي يحددها.
- التحقق من صحة سلسلة مقابل شروط مستقلة متعددة.
- تصفية التطابقات التي تلبي بعض الشروط دون غيرها.
التحقق من صحة كلمة المرور
Pattern: ^(?=.*[A-Z])(?=.*\d)(?=.*[^a-zA-Z\d]).{8,}$
Checks:
- at least one uppercase (?=.*[A-Z])
- at least one digit (?=.*\d)
- at least one symbol (?=.*[^a-zA-Z\d])
- minimum length 8 .{8,}تتحقق كل نظرة أمامية من شرط واحد، بدءًا من البداية (^). هم
كل العرض صفر: يبقى المحرك في الموضع 0 ثم يستهلك مع
محمي_INLINE_1.
الاستخراج بين المحددات
Pattern: (?<=\().+?(?=\))
Sample: Funzione foo(bar) e baz(qux, qix)
Match: "bar", "quux, qix" (without parentheses)Lookbehind + lookahead + محدد الكمي البطيء: يستخرج المحتوى ** بالداخل الأقواس ** دون تضمينها.
الجمع بين النظر إلى الأمام والنظر إلى الخلف
يتيح استخدام lookahead و lookbehind معًا عزل السلاسل التي تقع ضمن علامات أو تنسيقات محددة (على سبيل المثال، استخراج النص بين علامتين دون تضمين العلامات في المباراة النهائية). يؤدي هذا إلى تجنب عمليات تنظيف السلسلة اللاحقة.
جربه
استخرج قيمة كل تعيين `مفتاح=قيمة` من السجل: القيم فقط (بدون مفاتيح، لا `=`). قد تحتوي القيم على حروف وأرقام.
إظهار التلميح
انقل `=` داخل الشكل الخلفي (؟<==): بهذه الطريقة تحتوي المطابقة على القيمة فقط.
الحل متاح بعد 3 من المحاولات
تمرين المراجعة
ابحث عن الكلمات التي تحتوي على حرف كبير واحد على الأقل ورقم واحد على الأقل (بأي ترتيب)، وحدد مكانها في النص.
إظهار التلميح
نظرة مزدوجة في البداية: (?=\\w*[A-Z])(?=\\w*\\d). ثم استهلك الكلمة باستخدام \\w+.
الحل متاح بعد 3 من المحاولات
التحدي الإضافي
Extract only numerical digits that are enclosed exactly between parentheses, e.g. extract `102` from `(102)` without capturing the parentheses.
إظهار التلميح
Combine a positive lookbehind (?<=\( ) for the open parenthesis and a positive lookahead (?=\) ) for the closed one.
الحل متاح بعد 3 من المحاولات