Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] RegExt для вытаскивания имени файла из ссылки (http://forum.oszone.net/showthread.php?t=341020)

Uragan66 22-06-2019 21:15 2876457

RegExt для вытаскивания имени файла из ссылки
 
Доброго времени суток всем !
Прошу помощи в небольшом вопросе:
Есть текстовые файлы со строками:
Код:

xhr.open "GET", "http://iptv-m3u.ru/файл1.m3u", False
Ссылки во всех текстовых файлах разные, имена файлов тоже, но все с расширением .m3u
Нужно заменить эти строки на:
Код:

.savetofile "./plist/файл1.m3u", 2 '//overwrite
Написал рег. выражение:
Код:

найти:
^(([A-Z]:)?[/.]?[//{1,2}/]?.*[//{1,2}/])*(.+)/.(.+)",.*$
заменить на:
.savetofile "./plist/$4", 2 '//overwrite

Тестирую на Notepad++, всё отрабатывает нормально, но обрезает первую букву в имени файла. Например, в приведённом выше примере на выходе получается:
Код:

.savetofile "./plist/айл1.m3u", 2 '//overwrite
Подскажите, пожалуйста, как можно исправить мой RegExt ?

Iska 23-06-2019 02:20 2876477

Цитата:

Цитата Uragan66
Ссылки во всех текстовых файлах разные »

Вот поэтому стоило выложить кучу примеров этих ссылок.

Цитата:

Цитата Uragan66
но все с расширением .m3u »

Далее следует шаблон, в котором нет никакого упоминания .m3u. Как так?


Шаблон для поиска на базе PRCE:
Код:

.*\"http:\/\/.+\/(.+\.m3u)\", False
Для замены:
Код:

.savetofile "./plist/$1", 2 '//overwrite
P.S. RegEx или RegExp (regular expressions), но никак не RegExt.

Uragan66 23-06-2019 10:15 2876488

Цитата:

Цитата Iska
P.S. RegEx или RegExp (regular expressions), но никак не RegExt. »

да просто случайная ошибка, машинально, не заметил...
Цитата:

Цитата Iska
Вот поэтому стоило выложить кучу примеров этих ссылок. »

выложить то можно, но это ссылки на самообновляемые плейлисты с интернета и, попробуй угадай, какую ссылку сам автор выложит...
ссылки могут быть разной длины
Цитата:

Цитата Iska
Далее следует шаблон, в котором нет никакого упоминания .m3u. Как так? »

шаблон нашел в интернете, переделал под себя, он ищет имена файлов с любым расширением.
он то нормально отрабатывает, но отрезает первую букву в имени файла
Цитата:

Цитата Iska
Шаблон для поиска на базе PRCE: »

Iska, спасибо, но почему-то не срабатывает этот шаблон:

Iska 23-06-2019 13:05 2876507

Цитата:

Цитата Uragan66
Iska, спасибо, но почему-то не срабатывает этот шаблон: »

Про что и речь. Вы выкладываете кучу ссылок, мы пытаемся найти в них закономерности. В данном случае выяснилось, что протокол может быть и https, а в uri может присутствовать больше частей. Посему пока так:
Код:

.*\"https?:\/\/.+\/(.+\.m3u)\", False
И да — выкладывайте ещё и текстом: мало удовольствия перенабирать uri с картинки «ручками».

Uragan66 23-06-2019 14:12 2876515

Iska, спасибо большое, RegExp
Код:

.*\"https?:\/\/.+\/(.+\.m3u)\", False
работает нормально, на нескольких ссылках проверил.
Ссылки могут быть такие:
Код:

http://gorod.tv/iptv.m3u
http://listiptv.ru/fork18.m3u
https://smarttvnews.ru/apps/iptvchannels.m3u
http://iptvm3u.ru/one.m3u
https://webarmen.com/my/iptv/auto.nogrp.m3u
https://getsapp.ru/IPTV/Auto_IPTV_18.m3u
https://webhalpme.ru/rif.m3u
https://webhalpme.ru/if18.m3u
http://iptv-m3u.ru/iptvfull.m3u
http://iptv-m3u.ru/auto.xxx.m3u
http://bluecrabstv.do.am/Free.m3u
http://urlcut.ru/t.m3u
http://tv.cyxym.net/files/playlist-unicast.m3u
http://dmitry-tv.my1.ru/iptv/Dmitry-tv.m3u
http://tv-smart-tv.ru/iptv/iptvforever.m3u
http://strtv.zzz.com.ua/strtv.m3u

а может и ещё какие попадутся, всё зависит от автора плейлиста, куда он его зальет...

megaloman 23-06-2019 21:50 2876555

Вложений: 1
Uragan66, Никогда не использовал notepad++. Установил, исходный текст:
Цитата:

xhr.open "GET", "http://gorod.tv/iptv.m3u", False
xhr.open "GET", "http://listiptv.ru/fork18.m3u", False
xhr.open "GET", "https://smarttvnews.ru/apps/iptvchannels.m3u", False
xhr.open "GET", "http://iptvm3u.ru/one.m3u", False
xhr.open "GET", "https://webarmen.com/my/iptv/auto.nogrp.m3u", False
xhr.open "GET", "https://getsapp.ru/IPTV/Auto_IPTV_18.m3u", False
xhr.open "GET", "https://webhalpme.ru/rif.m3u", False
xhr.open "GET", "https://webhalpme.ru/if18.m3u", False
xhr.open "GET", "http://iptv-m3u.ru/iptvfull.m3u", False
xhr.open "GET", "http://iptv-m3u.ru/auto.xxx.m3u", False
xhr.open "GET", "http://bluecrabstv.do.am/Free.m3u", False
xhr.open "GET", "http://urlcut.ru/t.m3u", False
xhr.open "GET", "http://tv.cyxym.net/files/playlist-unicast.m3u", False
xhr.open "GET", "http://dmitry-tv.my1.ru/iptv/Dmitry-tv.m3u", False
xhr.open "GET", "http://tv-smart-tv.ru/iptv/iptvforever.m3u", False
xhr.open "GET", "http://strtv.zzz.com.ua/strtv.m3u", False
попробовал выражения:
Код:

.*/(.*\.m3u)",.*
\.savetofile "\./plist/$1", 2 '//overwrite

получил:
http://forum.oszone.net/attachment.p...1&d=1561315569, Вас это устраивает?

Uragan66 23-06-2019 22:42 2876565

Цитата:

Цитата megaloman
Вас это устраивает? »

megaloman, да, вполне, хотя планируется использовать не notepad++, а утилиту nhrt.exe . Но синтаксис регулярных выражений у них почти одинаковый.
Ваш RegExp отлично работает, как и составленный ув. Iska.
Спасибо большое за помощь!


Время: 19:15.

Время: 19:15.
© OSzone.net 2001-