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

نظرة مستقبلية إيجابية: `(؟=...)`

التطلع الإيجابي (?=...) هو تأكيد العرض صفر: فهو يتحقق من أن نمطًا معينًا يتبع الموضع الحالي، ولكنه يفعل ذلك لا تستهلك ** تلك الأحرف.

Code
Pattern: \d+(?= euro)
Sample:  Prezzo 100 euro, sconto 25 euro, totale 75 dollari.
                ^^^                 ^^

يتطلب المظهر الأمامي (?= euro) أن تكون الأرقام متبوعة بـ euro، ولكن تتضمن المباراة الأرقام فقط. 75 dollari غير متطابق (لا يوجد euro).

لماذا "العرض صفر"

فكر في المظهر الأمامي باعتباره شرطًا للمنصب، وليس باعتباره جزء من المباراة :

  • المباراة تتوقف قبل النظرة الأمامية.
  • الموضع "بعد المباراة" هو بداية النص الذي تم فحصه بواسطة النظرة الأمامية.
  • سيتم استئناف محاولة المباراة التالية بعلامة g من هناك.

وهذا يجعلها مثالية لاستخراج القيم دون سياقها: الأسعار بدون العملة، والكلمات قبل علامة الترقيم، وما إلى ذلك.

ميزات Lookahead والمسح الضوئي ذو العرض الصفري

يضمن المظهر الأمامي الإيجابي (?=...) أن النموذج المحدد يتبع النقطة الحالية، ولكن يتم استئناف المسح من الموضع قبل المظهر الأمامي. وهذا يمنع "استهلاك" أجزاء النص التي قد تكون مطلوبة للمطابقات اللاحقة.

جربه

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

قم باستخراج أرقام أسعار اليورو فقط (تسلسل الأرقام متبوعًا بـ "اليورو"). لا توجد عملة في المباراة.

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

انقل 'euro' داخل نقطة البحث الأمامية (؟= euro): لن تكون السلسلة جزءًا من المباراة.

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

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

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

ابحث عن كل كلمة متبوعة مباشرة بنقطتين `:` (ولكن بدون تضمين النقطتين في المباراة).

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

نفس المنطق: `:` ليس موجودًا في المباراة، ولكنه شرط موضع.

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

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

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

Find every word (e.g. function name) followed immediately by an open parenthesis `(`, excluding the parenthesis from the match.

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

انقل \\( (تم تجاوز القوس المفتوح) داخل النظرة الأمامية الإيجابية (؟=...).

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