الانتقال إلى المحتوى الرئيسي
الوحدة 6 · الدرس 4 من 424/32 في الدورة~12 min
دروس الوحدة (4/4)

نظرة عامة في الممارسة العملية

دعونا نجمع الأشكال الأربعة من البحث معًا في سيناريوهات العالم الحقيقي. تتألق عمليات البحث عندما تحتاج إلى:

  1. استخرج قيمة بدون السياق الذي يحددها.
  2. التحقق من صحة سلسلة مقابل شروط مستقلة متعددة.
  3. تصفية التطابقات التي تلبي بعض الشروط دون غيرها.

التحقق من صحة كلمة المرور

Code
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.

الاستخراج بين المحددات

Code
Pattern: (?<=\().+?(?=\))
Sample:  Funzione foo(bar) e baz(qux, qix)
Match: "bar", "quux, qix" (without parentheses)

Lookbehind + lookahead + محدد الكمي البطيء: يستخرج المحتوى ** بالداخل الأقواس ** دون تضمينها.

الجمع بين النظر إلى الأمام والنظر إلى الخلف

يتيح استخدام lookahead و lookbehind معًا عزل السلاسل التي تقع ضمن علامات أو تنسيقات محددة (على سبيل المثال، استخراج النص بين علامتين دون تضمين العلامات في المباراة النهائية). يؤدي هذا إلى تجنب عمليات تنظيف السلسلة اللاحقة.

جربه

تمرين#regex.m6.l4.e1
المحاولات: 0جارٍ التحميل…

استخرج قيمة كل تعيين `مفتاح=قيمة` من السجل: القيم فقط (بدون مفاتيح، لا `=`). قد تحتوي القيم على حروف وأرقام.

جارٍ تحميل المحرر…
إظهار التلميح

انقل `=` داخل الشكل الخلفي (؟<==): بهذه الطريقة تحتوي المطابقة على القيمة فقط.

الحل متاح بعد 3 من المحاولات

تمرين المراجعة

تمرين#regex.m6.l4.e2
المحاولات: 0جارٍ التحميل…

ابحث عن الكلمات التي تحتوي على حرف كبير واحد على الأقل ورقم واحد على الأقل (بأي ترتيب)، وحدد مكانها في النص.

جارٍ تحميل المحرر…
إظهار التلميح

نظرة مزدوجة في البداية: (?=\\w*[A-Z])(?=\\w*\\d). ثم استهلك الكلمة باستخدام \\w+.

الحل متاح بعد 3 من المحاولات

التحدي الإضافي

تمرين#regex.m6.l4.e3
المحاولات: 0جارٍ التحميل…

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 من المحاولات