Распознайте последнее слово после /

таким образом у меня есть некоторые URL интерна: например, "/img/pic/Image1.jpg" или "/pic/Image1.jpg" или просто "Image1.jpg", и я должен соответствовать этому "Image1.jpg", другими словами, я хочу соответствовать последовательности последнего знака после / или если существует не/, чем просто последовательность символов. Заранее спасибо!

9
задан Le_Coeur 16 February 2010 в 12:52
поделиться

7 ответов

. * / (. *) не будет работать, если нет / s.

([^ /] *) $ должен работать независимо от того, есть они или нет.

12
ответ дан 4 December 2019 в 07:04
поделиться
.*/([^/]*)

Группа захвата соответствует последней последовательности после /.

3
ответ дан 4 December 2019 в 07:04
поделиться

В Ruby вы бы написали

([^\/]*)$

Регулярные выражения в Ruby довольно универсальны, и вы можете проверить их вживую здесь: http://rubular.com / Кстати: может быть, есть другое решение, которое не использует регулярные выражения? Например, File.basenam (путь) (снова Ruby)

Изменить: profjim опубликовал его ранее.

1
ответ дан 4 December 2019 в 07:04
поделиться

Следующее выражение сделало бы трюк:

/([\w\d._-]*)$

Или даже проще (но я думаю, что это также было размещено ниже до меня)

([^/]+)$
-121--3227060-

Что-то вроде. */(. *) $ (подробности зависят от того, говорим ли мы о Perl или каком-то другом диалекте регулярных выражений)

Первый. * соответствует Тогда есть одна косая черта, а есть. *, которая соответствует всему от этой косой черты до конца (то есть $).

* работает жадно слева направо, что означает, что при наличии нескольких косых черт первый. * будет соответствовать всем, кроме последнего.

0
ответ дан 4 December 2019 в 07:04
поделиться

Я заметил, что вы сказали в своих комментариях, что используете javascript. На самом деле вам не нужно регулярное выражение для этого, и я всегда думаю, что неплохо иметь альтернативу использованию регулярного выражения.

var str = "/pic/Image1.jpg";
str.split("/").pop();

// example: 
alert("/pic/Image1.jpg".split("/").pop());     // alerts "Image1.jpg"
alert("Image2.jpg".split("/").pop());          // alerts "Image2.jpg"
1
ответ дан 4 December 2019 в 07:04
поделиться

На самом деле вам не нужен regexp для этого.

s="this/is/a/test"
s.substr(s.lastIndexOf("/")+1)
=> test

и это также отлично работает для строк без /, потому что тогда lastIndexOf возвращает -1.

s="hest"
s.substr(s.lastIndexOf("/")+1)
=> hest
11
ответ дан 4 December 2019 в 07:04
поделиться

Следующее выражение поможет:

/([\w\d._-]*)$

Или даже проще (но я думаю, что это также было опубликовано ниже до меня)

([^/]+)$
2
ответ дан 4 December 2019 в 07:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: