Ответ 1
Нет, ^
внутри []
означает отрицание.
[/]
означает "любой символ в наборе [/]'.
[^/]
означает "любой символ не в наборе [/]'.
Я просматривал stackoverflow и заметил регулярное выражение для соответствия всем, что было после последней косой черты
([^/]+$)
Итак, если у вас http://www.blah.com/blah/test Выражение reg будет извлекать "тест" без одинарных кавычек.
Мой вопрос, почему он это делает? Не означает ли//начало косой черты?
EDIT: Наверное, я не понимаю, как + $захватывает "тест". + повторяет предыдущий элемент один или несколько раз, поэтому он игнорирует все данные между всеми /slashes. как тогда $extract тест
Нет, ^
внутри []
означает отрицание.
[/]
означает "любой символ в наборе [/]'.
[^/]
означает "любой символ не в наборе [/]'.
В скобках ^/означает NOT A/. Таким образом, это соответствует последовательности не/до конца строки.
^
в начале []
является отрицанием класса символа. [...]
указывает набор символов для соответствия. [^...]
означает соответствие каждому символу, кроме этого набора символов.
So [^/]
означает совпадение всех возможных символов, кроме /
.
если вы положили ^ в группу, она говорит все чартеры не в этой группе. Таким образом, соответствие всем чартерам, которые не являются косой чертой, до конца строки $anchor.
Нет, ^
означает разные вещи в зависимости от контекста. Когда внутри класса символов ([]
), ^
отрицает выражение, что означает "соответствовать чему-либо, кроме /
.
Вне []
, ^
означает, что вы только что сказали.
В исходном вопросе нужен только backslash
before slash
, в этом случае regex получит everything after last slash
в строке
([^\/]+$)