2012-10-01 17 views
16

Ho già capito che .* significa zero o più di qualsiasi carattere, ma Qualcuno potrebbe spiegare come .* nel seguente lavoro e in che modo corrisponderebbe?How. * (Dot star) funziona?

.*([a-m/]*).* 

.*([a-m/]+).* 

.*?([a-m/]*).* 
+1

In Regex, '.' si riferisce a qualsiasi carattere, sia esso un numero, un carattere apl di alfabeto o qualsiasi altro carattere speciale. '*' significa zero o più volte. – asgs

+2

È abbastanza semplice - qualsiasi simbolo, presente zero o più volte - ma ci sono un * ton * di sfumature al di sotto di questo. Inoltre, è un concetto estremamente centrale nelle espressioni regolari. Esci subito e leggi uno sfondo su espressioni regolari. Otterrai più lontano, più veloce, in questo modo. –

risposta

6

Ogni caso è diverso:

.*([a-m/]*).*

La prima .* probabilmente corrisponde l'intera stringa, perché [a-m/] non è richiesto di essere presente, e la prima * è avido e viene prima.

.*([a-m/]+).*

La prima .* corrisponderà l'intera stringa fino all'ultimo carattere che corrisponde [a-m/] poiché è richiesta solo una, e la prima * è avido e viene prima.

.*?([a-m/]*).*

La prima .*? corrisponderà alla stringa fino al primo carattere che corrisponde [a-m/], perché *? non è avido, quindi [a-m/]+ corrisponderà tutto il possibile, perché + è avido, e poi l'ultimo .* corrisponderà al resto della stringa.

+0

Ben fatto! +1 – XIVSolutions

10

il punto significa qualcosa può andare qui e la stella significa almeno 0 volte così .* accetta qualsiasi sequenza di caratteri, tra cui una stringa vuota.

+2

Come hai fatto? Hai risposto a "non una vera domanda". –

+0

@Thereisnothingwecando: "chiuso come non una vera domanda ... 2 ottobre 12 alle 9:38". Ionut rispose all'altoparlante, (quando era ancora una domanda reale :)). –

4

. * Significa "qualsiasi carattere, qualsiasi numero di ripetizioni".

8

La funzione di. * Nei tuoi esempi è di assicurarsi che l'espressione contenente possa essere circondata da qualcosa (o niente). Il punto rappresenta un carattere arbitrario e l'asterisco indica che il carattere precedente può essere ripetuto un numero arbitrario di volte (o non del tutto).