Modül dersleri (1/4)
Olumlu bakış: `(?=...)`
pozitif bakış açısı (?=...) sıfır genişlikli bir iddiadır:
belirli bir modelin geçerli konumu takip edip etmediğini kontrol eder, ancak **
bu karakterleri tüketmeyin**.
Pattern: \d+(?= euro)
Sample: Prezzo 100 euro, sconto 25 euro, totale 75 dollari.
^^^ ^^(?= euro) ön izlemesi, rakamların ardından euro gelmesini gerektirir, ancak
maç yalnızca rakamları içerir. 75 dollari eşleşmiyor (euro yok).
Neden "sıfır genişlik"
İleriye bakmayı konumla ilgili bir koşul olarak düşünün, bir durum olarak değil maçın bir kısmı:
- Maç, önden önce durur.
- "Maçtan sonraki" konum, ileri görüşlü tarafından incelenen metnin başlangıcıdır.
gbayrağıyla bir sonraki maç denemesine buradan devam edilecektir.
Bu onu bağlamları olmadan değerlerin çıkarılması için mükemmel kılar: fiyatlar para birimi olmadan, noktalama işaretinden önceki kelimeler vb.
İleriye dönük özellikler ve sıfır genişlikli tarama
Pozitif bakış (?=...), belirtilen modelin geçerli noktayı takip ettiğini garanti eder, ancak tarama, önden önceki konumdan devam eder. Bu, sonraki eşleşmeler için gerekli olabilecek metnin bazı bölümlerinin "tüketilmesini" önler.
Deneyin
YALNIZCA euro fiyatlarının rakamlarını çıkarın (ardından 'euro' gelen rakam dizileri). Maçta para birimi yok.
İpucu göster
'Euro'yu ileriye dönük (?= euro) içine taşıyın: dize eşleşmenin bir parçası olmayacaktır.
3 denemeden sonra çözüm mevcut
Alıştırmayı gözden geçirin
Hemen ardından iki nokta üst üste `:` gelen her kelimeyi bulun (ancak eşleşmeye iki nokta üst üste eklemeden).
İpucu göster
Aynı mantık: `:` eşleşmede değil ama bir konum koşuludur.
3 denemeden sonra çözüm mevcut
Ek zorluk
Find every word (e.g. function name) followed immediately by an open parenthesis `(`, excluding the parenthesis from the match.
İpucu göster
\\( (açık parantezden kaçtı) pozitif bakış açısının (?=...) içine taşıyın.
3 denemeden sonra çözüm mevcut