Изменить URL с помощью Regex - PullRequest
       0

Изменить URL с помощью Regex

0 голосов
/ 27 декабря 2011

У меня есть URL, например:

http://i.myhost.com/myimage.jpg

Я хочу изменить этот URL на

http://i.myhost.com/myimageD.jpg.

(добавить D после имени изображения и перед точкой)

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

Ответы [ 2 ]

1 голос
/ 27 декабря 2011

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

Если все, что у вас есть, это URL, тогда подойдет решение @ mat.coffee. Однако если у вас есть фрагмент текста, в котором есть один или несколько URL-адресов, и вам нужно найти и изменить только те из них, вам понадобится нечто более сложное.

Посмотрите на структуру URL: {протокол} {адрес} {элемент}; где

  • {протокол} - "http://"," ftp: // "и т. Д .;
  • {адрес} - это имя, например, "www.google.com" или число, например «74.125.237.116» - в адресе всегда будет хотя бы одна точка; и
  • {item} - это "/ name", где name довольно гибко - будет ноль или более элементов, вы можете рассматривать их как каталоги и файл но это не совсем верно. Также последовательность элементов может заканчиваться на «/» (в том числе, когда их ноль).

Создание регулярного выражения, соответствующего URL, начинается с сопоставления каждой части. В случае элементов, которые вы хотите сопоставить с последним в последовательности отдельно - у вас будет ноль или более «каталогов» и один «файл», последний должен иметь форму «name.extension».

Получив регулярные выражения для каждой части, вы просто объединяете их, чтобы получить регулярное выражение для целого. Чтобы сформировать шаблон замены, вы можете заключить части вашего регулярного выражения в круглые скобки и обратиться к этим частям, используя \ number в строке замены - см., Например, решение @matic.coffee.

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

1 голос
/ 27 декабря 2011

Попробуйте использовать ^(.*)\.([a-zA-Z]{3,5}) и заменить на \1D\2.Я предполагаю, что расширение 3-5 буквенно-цифровых чисел, но вы можете изменить его в соответствии с требованиями.Например, если это просто jpg изображения, вы можете поместить это вместо [a-zA-Z]{3,5}.

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