2012-01-20 12 views
30

stavo navigando StackOverflow e hanno notato un'espressione regolare per la corrispondenza tutto dopo l'ultima barra èdelle espressioni regolari per ottenere tutto dopo l'ultima barra

([^/]+$) 

Così, per esempio, se si dispone di http://www.blah.com/blah/test L'espressione reg estrarrà 'test 'senza virgolette singole.

La mia domanda è perché lo fa? Non ^/significa inizio di una barra?

MODIFICA: Immagino di non capire come + $ grabs "test". + ripete l'elemento precedente una o più volte in modo che ignori tutti i dati tra tutte le/barre. come si può quindi estrarre il test

+5

Una risorsa impressionante per questo tipo di domande è http://regexr.com (vai qui: http://regexr.com?2vpj8 perla tua espressione attuale e se passi il mouse su ciascuna parte di essa, ottieni una descrizione di ciò che fa questa regola). –

+0

Una risorsa eccezionale per questo tipo di domande è http://regexr.com ([vai qui] (http://regexr.com?2vpj8) per la tua espressione attuale e se passi il mouse su ogni parte di esso, ottieni un bella descrizione di ciò che fa questa regola). –

risposta

23

No, uno ^ all'interno di [] significa negazione.

[/] indica "qualsiasi carattere nell'insieme [/]".

[^/] indica "qualsiasi carattere non nel set [/]".

+0

Immagino di non capire come + $ grabs "test". + ripete l'elemento precedente una o più volte in modo che ignori tutti i dati tra tutte le/barre. come fa quindi $ estrarre il test. – CodeCrack

+2

@CodeCrack '[^ /]' corrisponde a una non-barra; '[^ /] +' corrisponde alla prima sottostringa non-slash; '[^ /] + $' corrisponde alla sottostringa non a taglio alla fine di ciò che testate. –

+0

Si prega di modificare la risposta per parlare direttamente alla domanda invece di averla semplicemente nei commenti. –

0

^ all'inizio di [] è la negazione della classe di caratteri. [...] specifica un set di caratteri da abbinare. [^...] significa corrispondere ogni carattere eccetto quel set di caratteri.

Quindi [^/] significa corrispondere a tutti i caratteri possibili tranne /.

0

se si inserisce^in un gruppo, si dice che non tutte le carte in questo gruppo. Quindi abbinare tutte le carte che non sono tagli fino alla fine della linea $ anchor.

1

Tra parentesi, ^/significa NON A /. Quindi questo corrisponde a una sequenza di non -/'s fino alla fine della linea.

0

No, il ^ significa cose diverse a seconda del contesto. Quando all'interno di una classe di caratteri (il []), il ^ nega l'espressione, che significa "corrispondere nulla, tranne /.

Al di fuori della [], il ^ significa quello che hai detto.

1

In domanda iniziale, solo un backslash è necessario before slash, in questo caso espressione regolare otterrà everything after last slash nella stringa

([^\/]+$) 
Problemi correlati