Как я могу указать символ, который я хочу извлечь с помощью регулярного выражения? - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть ссылки, которые выглядят примерно так:

https://www.sample.com/sam-i/mel/Vo-20-Jah-Ma-O-lei-da-la-Ede-vn-Clas-Ma-O-ei-45597.html

Часть после .com в ссылках всегда различна, но они всегда заканчиваются на .html.

Я хочу извлечь эту часть с помощью регулярного выражения:

mel/Vo-20-Jah-Ma-O-lei-da-la-Ede-vn-Clas-Ma-O-ei-45597.html

Но с этим регулярным выражением:

(?:.(?!\/))+$

Я получаю толькоэта часть:

/Vo-20-Jah-Ma-O-lei-da-la-Ede-vn-Clas-Ma-O-ei-45597.html

Так как я могу сказать регулярному выражению получить все после предпоследнего обратного слэша?

1 Ответ

1 голос
/ 07 ноября 2019

Не разрешая косую черту, затем одну косую черту, а затем другую последовательность символов, которая не является косой чертой:

[^/]+/[^/]+$

Отрицательный взгляд, который вы использовали, будет в основном работать, нонеэффективно и однотипно. Стандартный способ сказать «символ, который не является (символом новой строки или) одним из следующих», представляет собой класс символов с отрицанием [^...].

(Это все косые черты, а не обратные косые черты {\\).)

Если на самом деле вы хотите все после третьего слеша и используете диалект, который разрешает обходные пути, попробуйте

(?<=^(?:[^/]*/){3}).*$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...