Modül dersleri (3/4)
Arkaya bakma: `(?<=...)` `(?<!...)`
Arkaya bakanlar ileri bakanların ayna görüntüsüdür: önceye bakarlar mevcut konum, hala sıfır genişlikte.
(?<=...)-- arkasına olumlu bakış: desen önce gelmelidir.(?<!...)-- negatif geriye bakış: desen önce OLMAMALIDIR.
Pattern: (?<=\$)\d+
Sample: Costo $100, sconto -25, totale $75.
^^^ ^^$ maçta değil ancak bir koşul olarak çalışıyor: yalnızca rakamlar
öncesinde dolar işareti eşleşmesi gelir.
Negatif geriye bakış
Pattern: (?<!\w)\d+
Sample: Codice abc123 e numero 456.
^^^(?<!\w), rakamlardan önce HİÇBİR kelime karakterinin bulunmamasını gerektirir:
abc123 hariçtir (123'den önce c, bir \w vardır), 456 eşleşmeleri (öncesinde)
bir boşluk var).
Yakalamayan grupla temel fark
\\$\\d+ matches "$100": the match includes the dollar sign.
(?<=\\$)\\d+ matches "100": the match contains ONLY the digits."Temiz" değerini önek olmadan çıkarmanız gerekiyorsa arkasına bakın doğru seçimdir.
JavaScript'te geriye dönük uyumluluk
Pozitif (?<=...) ve negatif (?<!...) geriye doğru bakış, geçerli konumdan önce neyin geldiğini kontrol eder. JavaScript'te ES2018'den itibaren desteklenmektedir; eski tarayıcılarda veya eski Node.js motorlarında sözdizimi derleme hatalarına neden olurlar.
Deneyin
Metindeki fiyatlardan yalnızca sayısal tutarı ($ işareti olmadan) çıkarın.
İpucu göster
\\$'yi olumlu bir geriye doğru (?<=\\$) içine taşıyın: bir konum koşulu, eşleşmenin parçası değil.
3 denemeden sonra çözüm mevcut
Alıştırmayı gözden geçirin
Başına bir harf veya rakam gelmeyen tüm rakam dizilerini bulun (örn. "abc123" gibi kod bölümlerini değil, "ayrılmış" sayıları).
İpucu göster
Öncesinde bir harf veya rakam olduğunda hariç tutmak için negatif geriye bakma (?<!\\w) kullanın.
3 denemeden sonra çözüm mevcut
Ek zorluk
Find only the digits of negative numbers (digits preceded by the `-` sign), excluding the minus sign from the match.
İpucu göster
Eksi işaretini - pozitif bir arka bakışın (?<=-) içine taşıyın.
3 denemeden sonra çözüm mevcut