2012-02-13 75 views
5

tengo este código .htaccess[^ /] + explicación en .htaccess

RewriteRule ^/([uge])/([^/]+)$ /$1/$2/ 

Pero yo no podía entender lo que hace [^/]+ hacer? He estado buscando esto en Google por un tiempo, pero no pude obtener lo que quería.

Respuesta

7

Tienes dos construcciones regex básicas aquí

Clase de carácter

See character classes on regular-expressions.info

[...] es una clase de caracteres, significa que este constructo coincide con un carácter de la clase (desde el interior de los corchetes).

La clase comienza con un ^, que da la clase de caracteres un significado especial, es una clase de caracteres negada ([^...]), significa que coincide con todo eso no es parte de la clase.

cuantificador

See quantifiers on regular-expressions.info

+ es un cuantificador, que significa 1 o más

significado de sus expresiones regulares

Para entender lo que esto está haciendo usted tiene también tomar lo siguiente en cuenta, el $ al final. Este es un ancla que coincide con el final de la cadena.

See anchors on regular-expressions.info

por lo ([^/]+)$ coincidir todos los caracteres al final de la cadena que no son barras.

Aquí también puede encontrar un basic tutorial

+0

gracias. Creo que esta es la mejor explicación para un principiante, como yo. –

4

Eso significa:

Partido 1 o más caracteres hasta barra inclinada / se encuentra

Cualquier cosa entre corchetes [ y ] que tiene acento circunflejo ^ en los actos de inicio tiene la negación y por lo tanto:

[^/] significa cualquier carácter e alvo /

[^/]+ significa 1 o más caracteres, excepto /

+0

gracias. +1 para ti. –

2

La expresión [^/] coincide con cualquier carácter que no es el /, y el Quantor + denota que la expresión a la izquierda de la Quantor tiene que aparecer en Leat una vez.

+0

gracias .. +1 para usted también :) –

5

[^/] significa cualquier carácter que no coincida con /.

+0

gracias +1 a usted ... –

3

[any_character] es una clase de caracteres o conjunto de caracteres charclass Ref. [^any_character] es una clase de caracteres o conjuntos de caracteres negados charclass negated Ref.

De Anchors Ref:

Recuerde ^ también tiene el significado: El acento circunflejo^coincide con la posición antes del primer carácter de la cadena (un ancla) cuando no se utiliza dentro de una clase de caracteres.

De charclass Ref: Metacharacters Inside Character Classes:

Tenga en cuenta que los únicos caracteres especiales o meta-caracteres dentro de una clase de caracteres son el corchete de cierre (]), la barra invertida(), el símbolo de intercalación (^) y el guión (-) Los metacaracteres habituales son caracteres normales dentro de una clase de caracteres, y no necesitan ser escapados por una barra invertida. Para buscar una estrella o más, use [+ *]. Su expresión regular funcionará bien si escapa de los metacaracteres regulares dentro de una clase de caracteres, pero al hacerlo reduce significativamente la legibilidad.

De Repitition Ref
+ significa uno o más chracters.

así, [^/]+

Medios encontró ningún carácter que no sea /.Por lo tanto, coincidirá hasta que se encuentre /.


Para ^/([uge])/([^/]+)$

  • la cadena debe comenzar con /
  • seguido de carácter u o g o e
  • seguidos por /
  • siguieron y terminaron por uno o más de cualquier carácter que no sea /

los () (entre paréntesis) se utilizan para: Ronda Soportes Crear una referencia inversa Ref