دروس الوحدة (1/4)
نظرة مستقبلية إيجابية: `(؟=...)`
التطلع الإيجابي (?=...) هو تأكيد العرض صفر:
فهو يتحقق من أن نمطًا معينًا يتبع الموضع الحالي، ولكنه يفعل ذلك
لا تستهلك ** تلك الأحرف.
Pattern: \d+(?= euro)
Sample: Prezzo 100 euro, sconto 25 euro, totale 75 dollari.
^^^ ^^يتطلب المظهر الأمامي (?= euro) أن تكون الأرقام متبوعة بـ euro، ولكن
تتضمن المباراة الأرقام فقط. 75 dollari غير متطابق (لا يوجد euro).
لماذا "العرض صفر"
فكر في المظهر الأمامي باعتباره شرطًا للمنصب، وليس باعتباره جزء من المباراة :
- المباراة تتوقف قبل النظرة الأمامية.
- الموضع "بعد المباراة" هو بداية النص الذي تم فحصه بواسطة النظرة الأمامية.
- سيتم استئناف محاولة المباراة التالية بعلامة
gمن هناك.
وهذا يجعلها مثالية لاستخراج القيم دون سياقها: الأسعار بدون العملة، والكلمات قبل علامة الترقيم، وما إلى ذلك.
ميزات Lookahead والمسح الضوئي ذو العرض الصفري
يضمن المظهر الأمامي الإيجابي (?=...) أن النموذج المحدد يتبع النقطة الحالية، ولكن يتم استئناف المسح من الموضع قبل المظهر الأمامي. وهذا يمنع "استهلاك" أجزاء النص التي قد تكون مطلوبة للمطابقات اللاحقة.
جربه
قم باستخراج أرقام أسعار اليورو فقط (تسلسل الأرقام متبوعًا بـ "اليورو"). لا توجد عملة في المباراة.
إظهار التلميح
انقل 'euro' داخل نقطة البحث الأمامية (؟= euro): لن تكون السلسلة جزءًا من المباراة.
الحل متاح بعد 3 من المحاولات
تمرين المراجعة
ابحث عن كل كلمة متبوعة مباشرة بنقطتين `:` (ولكن بدون تضمين النقطتين في المباراة).
إظهار التلميح
نفس المنطق: `:` ليس موجودًا في المباراة، ولكنه شرط موضع.
الحل متاح بعد 3 من المحاولات
التحدي الإضافي
Find every word (e.g. function name) followed immediately by an open parenthesis `(`, excluding the parenthesis from the match.
إظهار التلميح
انقل \\( (تم تجاوز القوس المفتوح) داخل النظرة الأمامية الإيجابية (؟=...).
الحل متاح بعد 3 من المحاولات