2012-01-20 19 views
30

estaba navegando stackoverflow y he notado una expresión regular para hacer coincidir todo después de la última barra esexpresión regular para conseguir todo después de la última barra

([^/]+$) 

Así, por ejemplo, si tiene http://www.blah.com/blah/test La expresión reg extraerá prueba' 'sin comillas simples.

Mi pregunta es ¿por qué lo hace? ¿No ^/significa el comienzo de una barra inclinada?

EDIT: Supongo que no entiendo cómo + $ grabs "prueba". + repite el elemento anterior una vez o más, por lo que ignora todos los datos entre todas las/barras. ¿Cómo extrae entonces $ la prueba

+5

Un recurso impresionante para este tipo de preguntas es http://regexr.com (vaya aquí: http://regexr.com?2vpj8 de tu expresión real y si pasas el cursor sobre cada parte de ella, obtienes una buena descripción de lo que hace esa regla). –

+0

Un recurso increíble para este tipo de preguntas es http://regexr.com ([ve aquí] (http://regexr.com?2vpj8) para tu expresión real y si pasas el cursor sobre cada parte del mismo, obtienes un buena descripción de lo que hace esa regla). –

Respuesta

23

No, un ^ dentro de [] significa negación.

[/] significa 'cualquier caracter en conjunto [/]'.

[^/] significa 'cualquier carácter que no esté en el conjunto [/]'.

+0

Supongo que no entiendo cómo + $ grabs "prueba". + repite el elemento anterior una vez o más, por lo que ignora todos los datos entre todas las/barras. cómo $ extrae la prueba. – CodeCrack

+2

@CodeCrack '[^ /]' coincide con uno que no sea una barra inclinada; '[^ /] +' concuerda con la primera subcadena que no sea solo barras inclinadas; '[^ /] + $' coincide con la subcadena sin barras al final de lo que prueba. –

+0

Edite la respuesta para hablar directamente sobre la pregunta en lugar de solo tenerla en los comentarios. –

0

^ al comienzo de [] es la negación de la clase de caracteres. [...] especifica un conjunto de caracteres para unir. [^...] significa que coincide con cada carácter excepto ese conjunto de caracteres.

So [^/] significa que coincide con todos los caracteres posibles excepto /.

0

si coloca el^en un grupo, indica todas las cartas no incluidas en este grupo. Así que combine todos los estatutos que no sean barras hasta el final de la línea $ ancla.

1

Entre paréntesis, ^/significa NO A /. Así que esto corresponde a una secuencia de no -/'s hasta el final de la línea.

0

No, el ^ significa cosas diferentes según el contexto. Cuando dentro de una clase de caracteres (el []), el ^ niega la expresión, que significa "juego cualquier cosa excepto /.

Fuera de [], la ^ significa que lo que acaba de decir.

1

En la pregunta original, sólo un backslash se necesita before slash, en este caso de expresiones regulares recibirá everything after last slash en la cadena

([^\/]+$) 
Cuestiones relacionadas