Neden RegExp boş sonuçlar alıyorum?

2 Cevap php

Ben bu RegExp kullanarak farklı bölgelerinde içine benim URL ayrıştırmak çalışıyorum:

([\w\\.-]*)

Örnek bir URL verilen http://www.foo.com/bar/baz I) (preg_match_all gelenler sonuçlar alırsınız:

Array
(
[0] => Array
    (
        [0] => http
        [1] => 
        [2] => 
        [3] => 
        [4] => www.foo.com
        [5] => 
        [6] => bar
        [7] => 
        [8] => baz
        [9] => 
    )

)

It seems that it parses any invalid character into an empty item.
How do I solve this?

2 Cevap

* boş yakalama grupları konum kullanılarak - + kullanmak yerine:

([\w\.-]+)

Ben bir alıntı dize içine var çünkü RE ekstra \ olduğunu varsayalım.

Emin İstediğiniz \\.?

Eğer bir ters eğik çizgi yerine büyük olasılıkla amacıyla oldum gibi dönemi kaçtı gibi diğer bir deyişle, gönderdiniz ne görünüyor. EDIT: düzenlilik için, hiçbir zarar gereksiz kaçışa kaldırmak için, ancak bu [Blixt tarafından işaret olarak - teşekkürler] asıl sorun değildir.

Son derece [- ama hangi eşleşen üzerinde temelini tanımlamak sağlayacak araçları vardır ki genel noktasının çalıştığından. Kendi dayalı NET regexes böylece PHP iş için idealdir olmasa] regex hata ayıklama aracı olarak Regülatör tavsiye

Hala aralığında ters eğik istediklerini anlamıyorum. Eğer söz lütfen kullanmak son Regex gönderebilir miyim? Ve bu cevap olmuştur dikkat dağıtıcı için özür dilerim!

EDIT: Blixt işaret olarak ben önerildiği gibi, dönem bir metachar olarak hareket etmez.