AkelPad Forum Index AkelPad
Support forum
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

поиск и замена
Goto page Previous  1, 2, 3 ... 10, 11, 12 ... 14, 15, 16  Next
 
Post new topic   Reply to topic    AkelPad Forum Index -> Discussion (Russian)
View previous topic :: View next topic  
Author Message
FeyFre



Joined: 07 Aug 2007
Posts: 2058
Location: Vinnitsa, Ukraine

PostPosted: Mon Dec 03, 2012 10:58 pm    Post subject: Reply with quote

Да, все \ в пути должны быть сдвоены. Либо путь должен быть заключен в одинарные кавычки '(но на это лучше не расчитвать, у меня с перепугу какого-то это не работает, так что пришлось ставить двойные кавычки с двойными \ ).
Далее, кусочек "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
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
shveicar



Joined: 29 Nov 2012
Posts: 16

PostPosted: Tue Dec 04, 2012 3:14 pm    Post subject: Reply with quote

Спасибо за желание помочь, - но к сожалению, ничего не получается - скрипт выдает синтаксическую ошибку.
Вроде все по пунктам расписанно, - видать "не дорос" до серьезных сценариев, хотя с регулярными выражениями - знаком.
В общем, - изначально была задумка упростить редактирование html страницы, - добавить описание из файла списка, что бы в ручную каждый раз не вбивать.
Обычно пользуюсь Textpipe, - но тут он бессилен...
Первый этап преобразования - получился (заменга фрагментов на цифры), а вот со вторым, (добавление строк - никак).
Так же, была задумка , - с помощью такого подхода отредактировать файл database.txt
хотя он больше похож на скрипт js ( для внутреннего поиска по сайту - замена ссылок и текста)
в нем тоже можно способом подстановки, сначала на цифры, затем на строки - произвести замену или автоматизировать процесс.
Конечно создавать ради этого скрипт, тем более что он не простой, - желания ни у кого нет, но если все же такое решение будет созданно, - буду очень признателен.
Вот сам файл архив с html - файлом списком, и для проверки на возможность обработки - файл database.txt
Надежда, как говорят, - "умирает последней"...
Back to top
View user's profile Send private message
FeyFre



Joined: 07 Aug 2007
Posts: 2058
Location: Vinnitsa, Ukraine

PostPosted: Tue Dec 04, 2012 7:49 pm    Post subject: Reply with quote

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
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
shveicar



Joined: 29 Nov 2012
Posts: 16

PostPosted: Tue Dec 04, 2012 8:51 pm    Post subject: Reply with quote

FeyFre
Большое Вам Спасибо, наконец - всё заработало, - был лишний пробел при копировании, -(может и еще что-то, кроме "alt)Embarassed
В общем, теперь - все в порядке.
Back to top
View user's profile Send private message
shveicar



Joined: 29 Nov 2012
Posts: 16

PostPosted: Wed Dec 05, 2012 12:40 am    Post subject: Reply with quote

Интерсно, получается данный скрипт - действует узко профильно? (сам пока не очень в этом - соображаю)
Решил применить его к файлу database.txt , точнее - к его фрагментам.
Всё подготовил, - вышло:
Code:

Keyword[02] =@"999-999"
Address[02] = "999-999"
подправил фрагмент на найти
Code:
=@"(\d+)-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
View user's profile Send private message
FeyFre



Joined: 07 Aug 2007
Posts: 2058
Location: Vinnitsa, Ukraine

PostPosted: Wed Dec 05, 2012 1:06 pm    Post subject: Reply with quote

Ну дык смотрите, в Вашем 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
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
shveicar



Joined: 29 Nov 2012
Posts: 16

PostPosted: Wed Dec 05, 2012 2:23 pm    Post subject: Reply with quote

Вот - елки палки, сразу и не сообразил, что ищется последовательность цифр, а не цифровое выражение, -и для замены единственного (уникального фрагмента) такой вариант работать не будет.
Прям как в первом классе...
Спасибо за подсказку.
Back to top
View user's profile Send private message
Lenchik



Joined: 10 Jan 2011
Posts: 283

PostPosted: Sat Jan 12, 2013 11:41 am    Post subject: Reply with quote

Есть объёмный текст, в котором заменили множество (не все) русских букв визуально похожими латинскими, и наоборот. Надо вернуть всё на место. Скорее всего для начала нужно просто два набора правил для поиска и замены через стандартный диалог или же через скрипт SearchReplace, если нет уже готового решения под таую задачу.
Code:
'ABCEHKMOPTXaceopxy' - кириллические буквы, которые выглядят как латинские
'АВСЕНКМОРТХасеорху' - латинские буквы, которые выглядят как кириллические


[ABCEHKMOPTXaceopxy] - так он побуквенно находит, но заменять побуквенно на [АВСЕНКМОРТХасеорху] согласно соответствию не хочет.

Что и куда прописать, чтобы рещить такую задачку?
Back to top
View user's profile Send private message Visit poster's website
Infocatcher



Joined: 06 Aug 2007
Posts: 1639

PostPosted: Sat Jan 12, 2013 12:27 pm    Post subject: Reply with quote

Lenchik
В первом приближении как-то так:
SearchReplace.js
Что: [ABCEHKMOPTXaceopxy]
Чем: return "АВСЕНКМОРТХасеорху".charAt("ABCEHKMOPTXaceopxy".indexOf($0));
[v] Заменять на функцию
Back to top
View user's profile Send private message Visit poster's website
Lenchik



Joined: 10 Jan 2011
Posts: 283

PostPosted: Sat Jan 12, 2013 12:52 pm    Post subject: Reply with quote

Спасибо. Работает. Пока каких-то недостатков не обнаружил.
Back to top
View user's profile Send private message Visit poster's website
FiLinX



Joined: 24 Oct 2008
Posts: 10
Location: где то рядом была Москва

PostPosted: Fri Jan 25, 2013 12:32 am    Post subject: Reply with quote

добра всем) не знаю, туда ли обращаюсь, но раз уж тут мне помогли в прошлый раз с 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

пособите а? Smile сам я диривенский, не по силам разобраться в этом всём.. к тому же хоться чтоб скрипт можно было бы легко подстраивать) ну задавать выборку например по "translation=", иль по "/watch?" с ютуба вот, - для адреса второй строки.. но и имя в #EXTINF чтоб тоже задавать выборку можно было, типа брать то что перед "</a>
</li>" и смещать наверх над адрес..

уух, чую нагородил геморру) но вот хотя бы например для этого http://torrent-tv.ru/channels.php - как скриптик сделать?
Back to top
View user's profile Send private message
FeyFre



Joined: 07 Aug 2007
Posts: 2058
Location: Vinnitsa, Ukraine

PostPosted: Fri Jan 25, 2013 1:15 am    Post subject: Reply with quote

Грубая прикидка.
Что:
Code:
<li.*window.location.href='([^']*)'.*<a.*>([^<])</a.*/li>
Чем:
Code:
#EXTINF:-1,$2\n$1
Детали уж сами подточите.
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
PadeDown



Joined: 18 Feb 2013
Posts: 2

PostPosted: Mon Feb 18, 2013 2:38 pm    Post subject: Поиск и замена: справочная информация Reply with quote

Столкнулся при работе с программой с такой проблемой: нужно было заменить в тексте слова, окруженные скобками - и я не так и не понял, как это можно сделать. Количество слов/символов разное, и сами они, понятно, тоже разные. Единственное подходящее выражение, которое я знаю, выглядит как (*), где * - любое количество символов, но программа его понимает буквально.
Короче говоря, вопрос: нельзя ли привести список подстановочных символов, которые можно использовать при поиске/замене? Кроме того, расшифруйте, пожалуйста, понятия "регулярные выражения" и "Esc-последовательности", а также как с ними работать. Я самый обычный пользователь и не владею программерской терминологией. Иначе говоря, использовать эти функции я не могу, и значит, лично для меня они пропадают зря.
Хорошо было бы объединить эту информацию в единый справочный файл или топик. Мне не удалось найти ее ни в справке, ни на форуме, ни через Google. Правда, есть похожие темы, но они начаты годы назад, начинаются с описаний старых версий программы, многие занимают не один десяток страниц - в общем, надо потратить немало времени, чтобы суметь извлечь из них какую-то пользу. Очень неудобно.

Заранее спасибо.
Back to top
View user's profile Send private message
DV



Joined: 16 Nov 2006
Posts: 854
Location: Kyiv, Ukraine

PostPosted: Mon Feb 18, 2013 2:49 pm    Post subject: Re: Поиск и замена: справочная информация Reply with quote

См. Справка - Руководство, раздел №8.
И как пример http://akelpad.sourceforge.net/forum/viewtopic.php?t=1507
Back to top
View user's profile Send private message
PadeDown



Joined: 18 Feb 2013
Posts: 2

PostPosted: Mon Feb 18, 2013 3:13 pm    Post subject: Reply with quote

Спасибо. Я пользуюсь версией программы 4.7.5, в ее справке информации по регулярным выражениям нет. Нашел только в архиве новой версии.
Все-таки жаль, что на форуме не было единой темы по вопросу (специально для таких "чайников" и слоупоков, как я).
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    AkelPad Forum Index -> Discussion (Russian) All times are GMT
Goto page Previous  1, 2, 3 ... 10, 11, 12 ... 14, 15, 16  Next
Page 11 of 16

 
Jump to:  
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


SourceForge.net Logo Powered by phpBB © 2001, 2005 phpBB Group