2012-02-13 18 views
5

mam ten kod .htaccess[^ /] + wyjaśnienie w htaccess

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

Ale ja naprawdę nie mogłem zrozumieć, co robi [^/]+ zrobić? Szukam tego w Google przez jakiś czas, ale nie mogłem dostać tego, co chciałem.

Odpowiedz

7

Masz dwa podstawowe konstrukty regex tutaj

Klasa znaków

See character classes on regular-expressions.info

[...] jest klasa znaków, oznacza to konstrukcja dopasowuje jeden znak z klasy (od wewnątrz nawiasów kwadratowych).

Twoja klasa zaczyna się ^, który daje klasowego charakteru szczególnego znaczenia, jego klasa zanegowana charakter ([^...]) oznacza coś nie pasuje to jest to część klasy.

kwantyfikatorów

See quantifiers on regular-expressions.info

+ jest kwantyfikator, co oznacza 1 lub więcej

sens swojego regex

zrozumieć, co to robi trzeba także wziąć następna rzecz pod uwagę, $ na końcu. Jest to kotwica pasująca do końca ciągu.

See anchors on regular-expressions.info

tak ([^/]+)$ dopasowania wszystkich znaków na końcu łańcucha, które nie są ukośniki.

Tutaj również można uzyskać basic tutorial

+0

dzięki. Myślę, że to najlepsze wytłumaczenie dla początkującego, jak ja. –

4

To znaczy:

Wytypowanie 1 lub więcej znaków aż ukośnik / znajduje

czegokolwiek w nawiasach kwadratowych [ i ] który ma daszka ^ w aktach START negacji i stąd:

[^/] oznacza dowolną postać e xcept /

[^/]+ oznacza 1 lub więcej znaków z wyjątkiem /

+0

dzięki. +1 dla ciebie. –

2

wyrażenie [^/] dopasowuje dowolny znak, który nie jest / oraz quantor + oznacza, że ​​wyrażenie po lewej stronie quantor musi pojawić się jeden raz.

+0

dzięki .. +1 dla ciebie też :) –

5

[^/] oznacza dowolny znak niezgodny z /.

+0

dzięki +1 do ciebie ... –

3

[any_character] to klasy postaci lub zestawy znaków charclass Ref. [^any_character] to negowana klasa znaków lub zestawy znaków charclass negated Ref.

Od Anchors Ref:

Pamiętaj ^ ma również znaczenie: Daszek^dopasowuje pozycję przed pierwszym znakiem w łańcuchu (kotwica) jeśli nie jest używany wewnątrz klasy znaków.

Od charclass Ref: Metacharacters Inside Character Classes:

Należy pamiętać, że tylko znaki specjalne lub metaznakami wewnątrz klasy znaków są nawias zamykający (]), odwrotny ukośnik(), daszek (^) i łącznik (-). Zwykłe metaznaki są normalnymi znakami wewnątrz klasy znaków i nie trzeba ich przechodzić przez ukośnik odwrotny. Aby wyszukać gwiazdkę lub plus, użyj [+ *]. Twój regex będzie działał dobrze, jeśli unikniesz regularnych metaznaków w klasie znaków, ale dzięki temu znacznie zmniejszysz czytelność.

Od Repitition Ref
+ oznacza jedną lub więcej chracters.

Więc [^/]+

Środki dowolny znak inny niż /.Dopasuje się, dopóki nie napotkamy na /.


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

  • łańcuch powinien zaczynać /
  • następnie postać U lub g lub e
  • następnie /
  • przestrzegane i zakończony przez jednego lub więcej dowolny znak inny niż /

z () (nawiasach okrągłych) są wykorzystywane do: nawiasach okrągłych Tworzenie wsteczne Ref