2009-10-13 4 views
1

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

мне нужно:

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

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

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

+0

что-то происходит с URL-адреса его означало быть (без пробелов): HTTP: // www.flickr.com/photos/xdjio/ 226228060/ – Doug

ответ

4

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

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; 
} 

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

+0

fan-bloody-tasic ;-) спасибо – Doug

+0

Как насчет просто расщепления пути и получения третьего элемента массива. – toy

0

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

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^