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.
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.
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
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/
dzięki. +1 dla ciebie. –
wyrażenie [^/]
dopasowuje dowolny znak, który nie jest /
oraz quantor +
oznacza, że wyrażenie po lewej stronie quantor musi pojawić się jeden raz.
dzięki .. +1 dla ciebie też :) –
[^/]
oznacza dowolny znak niezgodny z /
.
dzięki +1 do ciebie ... –
[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
dzięki. Myślę, że to najlepsze wytłumaczenie dla początkującego, jak ja. –