PHP'de bazı düzenli ifadeler yapmaya çalışıyorum ve bu alanda çok yetenekli değilim. Bir dizede preg_replace gibi bir regex işlevi kullandığımda, regex ile değiştirilen dizelere $ 1, $ 2, vb. Adlı bir değişken türüne erişebilirim. Bu ne denir ve nasıl kullanabilirim?
18
A
cevap
31
Bunlar normal ifadede geri bildirimleri olarak bilinir (daha fazla bilgi için here). Bunları, regex'inizde veya yedek dizede bulunan yakalama gruplarına (veya ()
ile çevrili alt şablonlara) başvurmak için kullanırsınız.
Bir örnek: Onlar geribaşvuruları denir ve regexp içindeki öğeleri gruplanmış eşleşen
/*
* Replaces abcd123 with 123abcd, or asdf789 with 789asdf.
*
* The $1 here refers to the capture group ([a-z]+),
* and the $2 refers to the capture group ([0-9]+).
*/
preg_replace('/([a-z]+)([0-9]+)/', '$2$1', $str);
6
. parantez ile regexp'nin bir bölümünü sarmak ise
, daha sonra konumuna karşılık gelen geribaşvuru ile, sonra aynı regexp'nin gerçekten de (ya da yerine bölümünde buna belirtebilir.
Eğik şekilde, veya dolar formu değiştirmeler de kullanılabilir:!.?
çok yardımcı olur\1, \2 == $1, $2
İlgili konular
- 1. 1 = 2
- 2. Regex pattern/etc/sudoers dosyasını düzenlemek için
- 3. $ 1, $ 2, $ 3
- 4. 1 + 1/2 + 1/3 + --- + 1/n =?
- 5. Regex yinelenen karakter (\\ 1 çalışmıyor)
- 6. 1 veya 2 basamaklı regex, isteğe bağlı alfasayısal olmayan, bilinen 2 alfa
- 7. Javascript'te, neden [1, 2] == [1, 2] veya ({a: 1}) == ({a: 1}) yanlıştır?
- 8. awk '{print $ 2, ",", $ 1} "?
- 9. Dönüş 1, 2, ..., 11.,
- 10. 2> & 1 PowerShell
- 11. $ nedir? Kabuk betiğinde $ 0 $ 1 $ 2 ortalama?
- 12. Neden regex her zaman 1 değerini döndürür?
- 13. Doğrulama için javascript'te 1-10 için regex
- 14. android.os.StrictMode örnekleri = 2; limit = 1
- 15. gün (Pazartesi = 1, Salı = 2)
- 16. 2 Takvim gösterisi 1 Bildirim
- 17. Doctrine 2 sorgu oluşturucu ile Regex?
- 18. Android işletim sistemi/etc/passwd,/etc/shadow,/etc/group gibi dosyalara sahip mi?
- 19. Javascript RegEx: Bir sembolden sonra 1 veya 2 basamak alın (bu sembol hariç)
- 20. regex []
- 21. Regex, belirli bir nedenle 2 sonuç döndürüyor
- 22. jquery regex 2 sınırlayıcı arasında değiştir
- 23. RegEx ben aşağıdaki gibi ya boş veya içinde 1 veya 2 numara olabilir bir dizeyle eşleşen çalışıyorum 0-2
- 24. host: /etc/resolv.conf dosyası ayrıştırılamadı
- 25. MySQL - DECIMAL (2, 2) içindeki 1 değeri 0.99 olarak çıkıyor.
- 26. WPF: 1 ciltlemede 2 dönüştürücü nasıl kullanılır?
- 27. mysqli_select_db() tam 2 parametre, 1 oscommerce
- 28. 1 görünümünde 2 IEnumerable modeller ekleyerek
- 29. 2 birincil anahtar başvuruyor 1 birincil anahtar
- 30. GAE Bir 401 (giriş 1/2)
Ama değişkenler tek tırnak içinde genişletmek olmadığını düşündü, ama ben test ettiğinde çalıştığını bunun nedeni nedir –
PCRE geribaşvuruların gibi, "$' ile gösteriliyorlar, ama PHP değişkenleriyle ilgisi yok. PHP tarafından değil, regex motoru tarafından görülüyor ve değiştiriliyorlar. – BoltClock
Tamam, bu mantıklı. Çok teşekkürler! –