Пожалуйста, регулярный запрос URL

Я хотел бы знать, может ли кто-нибудь помочь мне с проблемой регулярного выражения. Я хочу написать регулярное выражение для перехвата URL, похожих на этот URL:

www.justin.tv/channel_name_here

Я пытался:

/justin\.tv\/(.*)

Проблема, которую я получаю, заключается в том, что когда этот канал запускается, иногда URL-адрес превращается в что-то вроде этого:

www.justin.tv/channel_name_here#/w/45365675688

Я не могу поймать это.:(Может кто-нибудь, пожалуйста, помогите мне с этим? Я просто хочу поймать название канала без символа фунта и остальной части URL.

Вот несколько примеров URL:

www.justin.tv/winning_movies#/w/6347562128
http://www.justin.tv/cine_accion_hd16#/w/6347562128/18
http://www.justin.tv/fox_movies_hd1/

Я хотел бы получить:

winning_movies
cine_accion_hd16
fox_movies_hd1

Заранее спасибо!:)

2 ответа

Решение

Короткий ответ:

(?<=justin\.tv\/)([^#\/]+)

Длинный ответ:

Давайте разделим это на части. Сначала посмотрите на заднюю часть.

([^#\/]+)

Это разделяет строку на части, которые не содержат ни "#", ни "/". Теперь давайте посмотрим на первую часть.

(?<=justin\.tv\/)

Синтаксис "(?<=" С последующим ")" называется положительным взглядом сзади (на этой странице есть хорошие примеры и объяснения различных типов поиска). Используя простой пример:

(?<=A)B

В приведенном выше примере написано "Я хочу, чтобы все" B "были сразу после" A "". Возвращаясь к нашему большому примеру, мы говорим, что мы хотим, чтобы все части (разделенные '#' или '/') были сразу после части, называемой justin.tv/.

Посмотрите здесь пример выражения в действии.

@justin\.tv/([^#/]+)@

Если вы хотите, чтобы все до определенного символа (-set), используйте отрицательный класс. Кроме того, при работе с регулярным выражением для URL-адресов использование / в качестве разделителя подвержено ошибкам, так как вы должны экранировать все /. Вместо этого используйте что-то другое (например, @ в этом случае)

Другие вопросы по тегам