Как написать регулярное выражение для извлечения идентификатора изображения FlickR из URL?

Я хочу сделать две вещи, и я хочу сделать их красивым способом. Я работаю над проектом, который позволяет пользователям загружать фотографии Flickr, просто вводя URL-адрес своего изображения Flickr. Пример:http://www.flickr.com/photos/xdjio/226228060/

Мне нужно:

  • убедитесь, что это URL, соответствующий следующему формату: http://www.flickr.com/photos/[0]/[1]/

  • извлечь следующую часть: http://www.flickr.com/photos/xdjio/[0]/

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

13.10.2009 03:31:45
что-то происходит с URL-адресом (без пробелов): flickr.com/photos/xdjio 226228060 /
Doug 13.10.2009 03:36:28
2 ОТВЕТА
РЕШЕНИЕ

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

string input = "http://www.flickr.com/photos/xdjio/226228060/";
Match match = Regex.Match(input, "photos/[^/]+/(?<img>[0-9]+)", RegexOptions.IgnoreCase | RegexOptions.SingleLine);
if(match.Success)
{
    string imageID = match.Groups["img"].Value;
}

Разбивая его, мы ищем «photos /», за которым следуют один или несколько символов, которые не являются символом «/», затем / /, за которым следуют один или несколько символов, которые являются цифрами. Мы также помещаем сегмент чисел в именованную группу под названием «img».

4
13.10.2009 03:54:12
Как насчет того, чтобы просто разделить путь и получить третий элемент массива.
toy 2.01.2012 13:17:24

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

регулярное выражение для использования в этой ситуации будет:

photos/[^/]+/([0-9]+)

думал, что кто-то может найти это полезным

0
13.10.2009 23:37:41