Domanda

Sto cercando di analizzare il mio URL in diverse parti che utilizzano questo RegExp:

([\w\\.-]*)

Dato un esempio di URL http://www.foo.com/bar/baz ottengo questi risultati da preg_match_all ():

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

)

Sembra che analizza qualsiasi carattere non valido in un elemento vuoto.
Come posso risolvere questo?

È stato utile?

Soluzione

Utilizzando * state catturando gruppi vuoti - uso + invece:

([\w\.-]+)

Suppongo che il \ in più in RE è perché hai dentro una stringa tra virgolette.

Altri suggerimenti

questo può fare ciò che si vuole: ([\ w .-] + |.) Ciò corrisponderà a tutto parte dell'indirizzo.

Sei sicuro di volerlo \\.?

In altre parole, da quello che hai postato, sembra aver scampato un backslash invece del periodo, come probabilmente hai intenzione. EDIT:. Per ordine, nessun danno per rimuovere fuga ridondante, ma questo non è il vero problema [come sottolineato da Blixt - grazie]

Consigliamo vivamente il regolatore come strumento di debug regex [Anche se la sua base di .NET regex ideale quindi non sta per il lavoro PHP - ma il punto generale che ci sono strumenti che vi permetterà di identificare la base su cui sta operando corrispondenza]

Ancora non capisco quello che vuoi con i backslash nella gamma. Puoi pubblicare l'espressione regolare finale si utilizza nella domanda per favore? E dispiace per le distrazioni che questa risposta è stato!

EDIT:. Come ha sottolineato Blixt, periodo doesnt agire come un metachar come ho suggerito

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top