Ana içeriğe geç
Modül 6 · Ders 3 ders 4Kurstaki 23/32~12 min
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.
Code
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ış

Code
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

Code
\\$\\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

Egzersiz#regex.m6.l3.e1
Denemeler: 0Yükleniyor…

Metindeki fiyatlardan yalnızca sayısal tutarı ($ işareti olmadan) çıkarın.

Düzenleyici yükleniyor…
İ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

Egzersiz#regex.m6.l3.e2
Denemeler: 0Yükleniyor…

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ı).

Düzenleyici yükleniyor…
İ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

Egzersiz#regex.m6.l3.e3
Denemeler: 0Yükleniyor…

Find only the digits of negative numbers (digits preceded by the `-` sign), excluding the minus sign from the match.

Düzenleyici yükleniyor…
İpucu göster

Eksi işaretini - pozitif bir arka bakışın (?<=-) içine taşıyın.

3 denemeden sonra çözüm mevcut