| View previous topic :: View next topic |
| Author |
Message |
shveicar
Joined: 29 Nov 2012 Posts: 16
|
Posted: Mon Dec 03, 2012 9:04 pm Post subject: |
|
|
Infocatcher
Спасибо, только не получается - как понял принцип замены, - такой же, как в предыдущем примере(замена на функцию), путь к файлу естественно свой, только путь к диску, так и должен быть с двойным обратным слешом(D:\\) Или здесь используется другой скрипт?. В общем ноль замен... |
|
| Back to top |
|
 |
FeyFre
Joined: 07 Aug 2007 Posts: 1893 Location: Vinnitsa, Ukraine
|
Posted: Mon Dec 03, 2012 10:58 pm Post subject: |
|
|
Да, все \ в пути должны быть сдвоены. Либо путь должен быть заключен в одинарные кавычки '(но на это лучше не расчитвать, у меня с перепугу какого-то это не работает, так что пришлось ставить двойные кавычки с двойными \ ).
Далее, кусочек "f.lines = AkelPad.ReadFile("D:\\names.txt").split(/\r\n?|\n\r?/);" должен быть переписан под Ваш файл. Infocatcher вероятно не понял формат файла(или я?).
Искать что:alt="(\d+)[^"]+"
Чем:
| Code: | | var g = arguments.callee; if(typeof(g.lines)=="undefined"){g.lines={};var arr=AkelPad.ReadFile("c:\\pattern.txt").split(/\r\n?|\n\r?/);for(var ind in arr){var str=arr[ind];if(!str) continue;var sind = str.indexOf(' ');g.lines[str.substring(0,sind)]=str.substring(sind+1).replace(/^\s*/,'').replace(/\s*$/,'');}}return 'alt="'+g.lines[$1]+'"'; |
C:\\pattern.txt заменить своим файлом(ставить двойные \\ где нужно).
Установить птички "Регулярные" "Заменить функцией"
Пояснение:
Ищутся все вхождения alt="123abс",любой не пустой набор цифр(за это отвечает (\d+)), abс - любые знаки до кавычки(за это отвечает [^"]+ , если нужны вхождения конкретных вхождений - замените на своё).
Далее по "Чем":
Кусочек до "return 'alt=...." отвечает за загрузку таблицы соответствия найденному числу подставляемой строке. Каждая строка указанного файла парсится построчно(пустые пропускаются, строка из одних пробелов не считается пустой!) по шаблону "число подстановка". До числа не должно быть пробела, между "числом"и "подстановкой" минимум 1 пробел(больше проигнорируются), и после "подставноки" пробелы игнорируются. Полученные пары "число" подстановка сохраняются в списке lines.
Кусочек "return 'alt=...." и до конца отвечает собственно за вставку. Найденный набор цифр ищется в списке lines, подстановка обрамляется alt=" " и собственно происходит замена.
Что будет если найдется последовательность цифр, которой нету в списке подстановок? Вместо подстановки появится слово undefined.
Если будете пользоваться "Заменить всё", то файл подстановок прочитается один раз, если через "Заменить" - каждый раз будет читаться. Учтите это, если файл подстановок очень большой будет заметный лаг.
Конечно можно было бы больше проверок вставить, но писать тяжело, и думаю Вам этого хватит.(вот бы окно кода пре-инициализации сюда, куда подготовку к замене внести можно было бы....) |
|
| Back to top |
|
 |
shveicar
Joined: 29 Nov 2012 Posts: 16
|
Posted: Tue Dec 04, 2012 3:14 pm Post subject: |
|
|
Спасибо за желание помочь, - но к сожалению, ничего не получается - скрипт выдает синтаксическую ошибку.
Вроде все по пунктам расписанно, - видать "не дорос" до серьезных сценариев, хотя с регулярными выражениями - знаком.
В общем, - изначально была задумка упростить редактирование html страницы, - добавить описание из файла списка, что бы в ручную каждый раз не вбивать.
Обычно пользуюсь Textpipe, - но тут он бессилен...
Первый этап преобразования - получился (заменга фрагментов на цифры), а вот со вторым, (добавление строк - никак).
Так же, была задумка , - с помощью такого подхода отредактировать файл database.txt
хотя он больше похож на скрипт js ( для внутреннего поиска по сайту - замена ссылок и текста)
в нем тоже можно способом подстановки, сначала на цифры, затем на строки - произвести замену или автоматизировать процесс.
Конечно создавать ради этого скрипт, тем более что он не простой, - желания ни у кого нет, но если все же такое решение будет созданно, - буду очень признателен.
Вот сам файл архив с html - файлом списком, и для проверки на возможность обработки - файл database.txt
Надежда, как говорят, - "умирает последней"... |
|
| Back to top |
|
 |
FeyFre
Joined: 07 Aug 2007 Posts: 1893 Location: Vinnitsa, Ukraine
|
Posted: Tue Dec 04, 2012 7:49 pm Post subject: |
|
|
1. У Вас ошибочки в самом тексте. У вас постоянно "alt="1-999" - первая кавычка лишняя совсем. Вам все обозреватели ошибки выдадут. Уберите её.
2. У меня работает.
Что:alt="(\d+)-999"
Чем: | Code: | | var g = arguments.callee; if(typeof(g.lines)=="undefined"){g.lines={};var arr=AkelPad.ReadFile("t:\\build\\help\\zamena_alt=\\filelist.txt").split(/\r\n?|\n\r?/);for(var ind in arr){var str=arr[ind];if(!str) continue;var sind = str.indexOf(' ');g.lines[str.substring(0,sind)]=str.substring(sind+1).replace(/^\s*/,'').replace(/\s*$/,'');}}return 'alt="'+g.lines[$1]+'"'; | Подставить свой путь!
В файле zamena_alt=.html заменило 15 штук.
| Quote: | | скрипт выдает синтаксическую ошибку. | Скрин в студию. Значения полей поиска, замены в студию. Обновить скрипт, плагин Scripts не пробовали? |
|
| Back to top |
|
 |
shveicar
Joined: 29 Nov 2012 Posts: 16
|
Posted: Tue Dec 04, 2012 8:51 pm Post subject: |
|
|
FeyFre
Большое Вам Спасибо, наконец - всё заработало, - был лишний пробел при копировании, -(может и еще что-то, кроме "alt)
В общем, теперь - все в порядке. |
|
| Back to top |
|
 |
shveicar
Joined: 29 Nov 2012 Posts: 16
|
Posted: Wed Dec 05, 2012 12:40 am Post subject: |
|
|
Интерсно, получается данный скрипт - действует узко профильно? (сам пока не очень в этом - соображаю)
Решил применить его к файлу database.txt , точнее - к его фрагментам.
Всё подготовил, - вышло:
| Code: |
Keyword[02] =@"999-999"
Address[02] = "999-999"
| подправил фрагмент на найти
заменить | Code: | var g = arguments.callee; if(typeof(g.lines)=="undefined"){g.lines={};var arr=AkelPad.ReadFile("c:\\filelist.txt").split(/\r\n?|\n\r?/);for(var ind in arr){var str=arr[ind];if(!str) continue;var sind = str.indexOf(' ');g.lines[str.substring(0,sind)]=str.substring(sind+1).replace(/^\s*/,'').replace(/\s*$/,'');}}return '='+g.lines[$1]+'';
| правда в файле списке несколько тысяч строк, но все в точности как в предыдущем примере.
| Code: | 1 "0-9"
2 "a"
3 "b" | И тут, - скрипт меняет мне все значения на ="ppa" во всех нужных местах. Что может быть не так?
Сам фрагмент, и файл список прилагаю
Помогите еще разок, плиз... |
|
| Back to top |
|
 |
FeyFre
Joined: 07 Aug 2007 Posts: 1893 Location: Vinnitsa, Ukraine
|
Posted: Wed Dec 05, 2012 1:06 pm Post subject: |
|
|
Ну дык смотрите, в Вашем mergefilename.txt все вхождения =@"999-999" (других просто нетуу) . Поиск находит эти первые 999 и подставляет именно замену соответсвующую ей из файла-списка. Если вы хотите ориентироваться по другой части, например по Keyword[09] =@"999-999" , то соотвественно Вам нужно его и искать | Code: | | (Keyword\[(\d+)\]\s*=)@"999-999" | А в Чем тот return что там есть заменить на | Code: | | return $1+g.lines[$2]; | Только учтите, у Вас Keyword[01] в тексте, и в файле-списке замен тоже должно быть именно 01, а не 1. |
|
| Back to top |
|
 |
shveicar
Joined: 29 Nov 2012 Posts: 16
|
Posted: Wed Dec 05, 2012 2:23 pm Post subject: |
|
|
Вот - елки палки, сразу и не сообразил, что ищется последовательность цифр, а не цифровое выражение, -и для замены единственного (уникального фрагмента) такой вариант работать не будет.
Прям как в первом классе...
Спасибо за подсказку. |
|
| Back to top |
|
 |
Lenchik
Joined: 10 Jan 2011 Posts: 151
|
Posted: Sat Jan 12, 2013 11:41 am Post subject: |
|
|
Есть объёмный текст, в котором заменили множество (не все) русских букв визуально похожими латинскими, и наоборот. Надо вернуть всё на место. Скорее всего для начала нужно просто два набора правил для поиска и замены через стандартный диалог или же через скрипт SearchReplace, если нет уже готового решения под таую задачу.
| Code: | 'ABCEHKMOPTXaceopxy' - кириллические буквы, которые выглядят как латинские
'АВСЕНКМОРТХасеорху' - латинские буквы, которые выглядят как кириллические |
[ABCEHKMOPTXaceopxy] - так он побуквенно находит, но заменять побуквенно на [АВСЕНКМОРТХасеорху] согласно соответствию не хочет.
Что и куда прописать, чтобы рещить такую задачку? |
|
| Back to top |
|
 |
Infocatcher
Joined: 06 Aug 2007 Posts: 1433
|
Posted: Sat Jan 12, 2013 12:27 pm Post subject: |
|
|
Lenchik
В первом приближении как-то так:
SearchReplace.js
Что: [ABCEHKMOPTXaceopxy]
Чем: return "АВСЕНКМОРТХасеорху".charAt("ABCEHKMOPTXaceopxy".indexOf($0));
[v] Заменять на функцию |
|
| Back to top |
|
 |
Lenchik
Joined: 10 Jan 2011 Posts: 151
|
Posted: Sat Jan 12, 2013 12:52 pm Post subject: |
|
|
| Спасибо. Работает. Пока каких-то недостатков не обнаружил. |
|
| Back to top |
|
 |
FiLinX
Joined: 24 Oct 2008 Posts: 10 Location: где то рядом была Москва
|
Posted: Fri Jan 25, 2013 12:32 am Post subject: |
|
|
добра всем) не знаю, туда ли обращаюсь, но раз уж тут мне помогли в прошлый раз с m3u разобраться, то здесь и спрошу..
вот помогите, есть допустим такой текст:
<li onclick="window.location.href='http://torrent-tv.ru/torrent-online.php?translation=390';">
<a href="torrent-online.php?translation=390">2x2</a>
</li>
<li onclick="window.location.href='http://torrent-tv.ru/torrent-online.php?translation=385';">
<a href="torrent-online.php?translation=385">Домашний</a>
</li>
<li onclick="window.location.href='http://torrent-tv.ru/torrent-online.php?translation=391';">
<a href="torrent-online.php?translation=391">Звезда</a>
а хотелось бы создавать из него такой продукт:
#EXTM3U
#EXTINF:-1,2x2
http://torrent-tv.ru/torrent-online.php?translation=390
#EXTINF:-1,Домашний
http://torrent-tv.ru/torrent-online.php?translation=385
#EXTINF:-1,Звезда
http://torrent-tv.ru/torrent-online.php?translation=391
пособите а? сам я диривенский, не по силам разобраться в этом всём.. к тому же хоться чтоб скрипт можно было бы легко подстраивать) ну задавать выборку например по "translation=", иль по "/watch?" с ютуба вот, - для адреса второй строки.. но и имя в #EXTINF чтоб тоже задавать выборку можно было, типа брать то что перед "</a>
</li>" и смещать наверх над адрес..
уух, чую нагородил геморру) но вот хотя бы например для этого http://torrent-tv.ru/channels.php - как скриптик сделать? |
|
| Back to top |
|
 |
FeyFre
Joined: 07 Aug 2007 Posts: 1893 Location: Vinnitsa, Ukraine
|
Posted: Fri Jan 25, 2013 1:15 am Post subject: |
|
|
Грубая прикидка.
Что: | Code: | | <li.*window.location.href='([^']*)'.*<a.*>([^<])</a.*/li> | Чем: Детали уж сами подточите. |
|
| Back to top |
|
 |
i0n0ff
Joined: 23 Feb 2013 Posts: 4
|
Posted: Sat Feb 23, 2013 2:08 pm Post subject: |
|
|
продублировано из другого топика в QSearch плагине:
неужели нет в плагине возможности заменить найденное??
есть плейлисты, не стану вдаваться в подробности: формат m3u, не буду описывать, что внутри - все понятно и так по примеру:
| Code: | D:\!m\"artist name"\"year - album name"\"track number" - "title"."mp3/flac/..."
пример (предположим, тут разные трэки и альбомы и т.д.):
D:\!m\The XX\2009 - XX (CD 1)\01. Intro.flac
D:\!m\The XX\2009 - XX (CD 1)\01. Intro.flac
D:\!m\The XX\2009 - XX (CD 1)\01. Intro.flac |
я как можно проще сформулирую, пропуская все остальное: мне нужно изменить в плейлисте:
| Code: | D:\!m\The XX\2009 - XX (CD 1)\01. Intro.flac
на
D:\!burned\some folder\01. Intro.flac |
то есть все что остается, это только наименования файла, ну и локальный диск в данном случае (что не важно). меняются папки.
----
в этом плагине выделить то, что мне нужно легко:
то есть таким образом, он выделяет "!m\The XX\2009 - XX (CD 1)\" и что важно для меня, не выходит в поиске за строчку, т.е. в случае
| Code: | | D:\!m\The XX\01. Intro.flac |
он бы пропустил, а не взял полторы строчки, как это делает например microsoft word (чего не удалось мне избежать)
---
так как мне теперь заменить выделенное на одно единственное значение??? эта же "функция" в обычном поиске/замене по неясной мне причине (это не значит, что причина не очевидна, я не разбираюсь совсем) не так работает со звездочкой, т.е. выделяет только:
| Code: | !m\The XX\
вместо
!m\The XX\2009 - XX (CD 1)\ |
Помогите мне пожалуйста справиться каким-нибудь образом, до этого я тратил прилично времени на тупую замену построчно |
|
| Back to top |
|
 |
DV
Joined: 16 Nov 2006 Posts: 726 Location: Kyiv, Ukraine
|
Posted: Sat Feb 23, 2013 3:04 pm Post subject: Re: please, help |
|
|
i0n0ff,
пользуясь этим же плагином с использованием регулярных выражений, несложно подобрать регулярное выражение для поиска, которое в данном случае выглядит как
Далее вызываем диалог замены и используем в нём это регулярное выражение, не забыв установить соответствующую галочку.
По регулярным выражениям крайне рекомендую почитать в таком неожиданном месте, как Справка - Руководство. |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|