Подтвердить что ты не робот

Регулярное выражение для получения всего после последней косой черты

Я просматривал stackoverflow и заметил регулярное выражение для соответствия всем, что было после последней косой черты

([^/]+$)

Итак, если у вас http://www.blah.com/blah/test Выражение reg будет извлекать "тест" без одинарных кавычек.

Мой вопрос, почему он это делает? Не означает ли//начало косой черты?

EDIT: Наверное, я не понимаю, как + $захватывает "тест". + повторяет предыдущий элемент один или несколько раз, поэтому он игнорирует все данные между всеми /slashes. как тогда $extract тест

4b9b3361

Ответ 1

Нет, ^ внутри [] означает отрицание.

[/] означает "любой символ в наборе [/]'.

[^/] означает "любой символ не в наборе [/]'.

Ответ 2

В скобках ^/означает NOT A/. Таким образом, это соответствует последовательности не/до конца строки.

Ответ 3

^ в начале [] является отрицанием класса символа. [...] указывает набор символов для соответствия. [^...] означает соответствие каждому символу, кроме этого набора символов.

So [^/] означает совпадение всех возможных символов, кроме /.

Ответ 4

если вы положили ^ в группу, она говорит все чартеры не в этой группе. Таким образом, соответствие всем чартерам, которые не являются косой чертой, до конца строки $anchor.

Ответ 5

Нет, ^ означает разные вещи в зависимости от контекста. Когда внутри класса символов ([]), ^ отрицает выражение, что означает "соответствовать чему-либо, кроме /.

Вне [], ^ означает, что вы только что сказали.

Ответ 6

В исходном вопросе нужен только backslash before slash, в этом случае regex получит everything after last slash в строке

([^\/]+$)