2012-02-13 18 views
5

Ho questo codice .htaccess[^ /] + spiegazione .htaccess

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

Ma io non riuscivo a capire che cosa vuol [^/]+ fare? Ho cercato questo su Google per un po ', ma non ho potuto ottenere quello che volevo.

risposta

7

Hai due costrutti base regex qui

Classe carattere

See character classes on regular-expressions.info

[...] è una classe di caratteri, significa che questo costrutto partite di un carattere dalla classe (da dentro le parentesi quadre).

La classe inizia con una ^, che dà la classe di caratteri un significato speciale, la sua una classe caratteri negat ([^...]), significa corrisponde a tutto ciò che non questo è parte della classe.

Quantificatore

See quantifiers on regular-expressions.info

+ è un quantificatore, che significa 1 o più

Significato vostra regex

di capire che cosa questo sta facendo si hanno anche per prendere la prossima cosa in considerazione, il $ alla fine. Questa è un'ancora che corrisponde alla fine della stringa.

See anchors on regular-expressions.info

così ([^/]+)$ partite tutti i caratteri alla fine della stringa che non sono barre.

Qui si possono anche trovare un basic tutorial

+0

grazie. Penso che questa sia la migliore spiegazione per un principiante, come me. –

4

Ciò significa:

allineamento 1 o più caratteri fino barra / è situato

Tutto parentesi quadre [ e ] che ha cursore ^ ai atti inizio ha negazione e quindi:

[^/] significa qualsiasi carattere e XCept /

[^/]+ significa 1 o più caratteri tranne /

+0

grazie. +1 per te. –

2

L'espressione [^/] qualsiasi carattere non è il / e la Quantor + indica che l'espressione a sinistra del Quantor deve comparire mantieni una volta

+0

grazie .. +1 anche a te :) –

5

[^/] indica qualsiasi carattere non corrispondente a /.

+0

grazie +1 a te ... –

3

[any_character] è una classe di caratteri o set di caratteri charclass Ref. [^any_character] è una classe di caratteri o set di caratteri negati charclass negated Ref.

Da Anchors Ref:

Ricordate ^ ha anche il significato: L'accento circonflesso^corrisponde la posizione prima del primo carattere della stringa (un ancoraggio) quando non è utilizzato all'interno di una classe di caratteri.

Da charclass Ref: Metacharacters Inside Character Classes:

nota che gli unici caratteri speciali o metacaratteri all'interno di una classe di caratteri sono la parentesi di chiusura (]), la barra inversa(), l'accento circonflesso (^) e il trattino (-). I soliti metacaratteri sono caratteri normali all'interno di una classe di caratteri e non devono essere sfuggiti da una barra rovesciata. Per cercare una stella o più, usa [+ *]. L'espressione regolare funzionerà correttamente se si sfuggono i metacaratteri regolari all'interno di una classe di caratteri, ma ciò riduce significativamente la leggibilità.

Da Repitition Ref
+, una o più chracters.

così, [^/]+

Mezzi corrisponde con nessun carattere diverso da /.Quindi, corrisponderà finché non si incontra un /.


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

  • la stringa dovrebbe iniziare con /
  • seguito dal carattere u o g o e
  • seguiti da /
  • seguiti e si è conclusa da uno o più qualsiasi carattere diverso da /

le (parentesi tonde) () sono utilizzati per: rotonde staffe Creare un backreference Ref