Убрать регулярным выражением слеш из ссылки если он есть
Есть перечень ссылок, некоторые из них заканчиваются на /, как их убрать? Нужно убрать только / (слеш если он есть), который стоит после файла:
https://somesite.com//gallery/2020/6/4/19n.jpg
https://somesite.com//gallery/14tn.jpg/ - здесь убрать
https://somesite.com//gallery/2020/6/4/14tn.jpg/ - здесь убрать
https://somesite.com//gallery/
Ответы (3 шт):
Автор решения: Vadik
→ Ссылка
Сохранить список ссылок в файл urls.txt:
https://somesite.com//gallery/2020/6/4/19n.jpg
https://somesite.com//gallery/14tn.jpg/
https://somesite.com//gallery/2020/6/4/14tn.jpg/
https://somesite.com//gallery/
В терминале выполнить команду:
cat urls.txt | sed 's/\.jpg\/$/.jpg/'
Результат:
https://somesite.com//gallery/2020/6/4/19n.jpg
https://somesite.com//gallery/14tn.jpg
https://somesite.com//gallery/2020/6/4/14tn.jpg
https://somesite.com//gallery/
Автор решения: PotroNik
Подробнее:
→ Ссылка
Регулярное выражение: (?<=jpg)\/(?=\s)
Пример на JavaScript:
const regex = /(?<=jpg)\/(?=\s)/gm;
const str = ` https://somesite.com//gallery/2020/6/4/19n.jpg
https://somesite.com//gallery/14tn.jpg/ - здесь убрать
https://somesite.com//gallery/2020/6/4/14tn.jpg/ - здесь убрать
https://somesite.com//gallery/2020/6/4/14tn.jpg/
https://somesite.com//gallery/ `;
console.log(str.replace(regex, ''));
(?<=jpg) - группа позитивного просмотра назад, проверяем что перед слеш есть текст jpg\/ - экранируем слеш, т.к. чаще всего они используется в роли разделителя. В нашем случае он нужен как обычный стринг(?=\s) - группа позитивного просмотра вперед, проверяем что после символа слеш идет любой пробельный, \s эквивалентно [\r\n\t\f\v ]
Автор решения: teran
→ Ссылка
в каком-нибудь notepad++ делаем замену \.(jpe?g|png|gif)/$ на .$1
нужные расширения файлов перечисляем через | внутри скобок