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 ... 11, 12, 13, 14, 15  Next
 
Post new topic   Reply to topic    AkelPad Forum Index -> Discussion (Russian)
View previous topic :: View next topic  
Author Message
i0n0ff



Joined: 23 Feb 2013
Posts: 4

PostPosted: Sat Feb 23, 2013 2:08 pm    Post subject: Reply with quote

продублировано из другого топика в 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

то есть все что остается, это только наименования файла, ну и локальный диск в данном случае (что не важно). меняются папки.
----
в этом плагине выделить то, что мне нужно легко:
Code:
\!m\\The XX\\*\\

то есть таким образом, он выделяет "!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
View user's profile Send private message
DV



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

PostPosted: Sat Feb 23, 2013 3:04 pm    Post subject: Re: please, help Reply with quote

i0n0ff,
пользуясь этим же плагином с использованием регулярных выражений, несложно подобрать регулярное выражение для поиска, которое в данном случае выглядит как
Code:
d:\\!m\\.+\\.+\\

Далее вызываем диалог замены и используем в нём это регулярное выражение, не забыв установить соответствующую галочку.
По регулярным выражениям крайне рекомендую почитать в таком неожиданном месте, как Справка - Руководство.
Back to top
View user's profile Send private message
i0n0ff



Joined: 23 Feb 2013
Posts: 4

PostPosted: Sat Feb 23, 2013 3:11 pm    Post subject: Re: please, help Reply with quote

DV wrote:
i0n0ff,
пользуясь этим же плагином с использованием регулярных выражений, несложно подобрать регулярное выражение для поиска, которое в данном случае выглядит как
Code:
d:\\!m\\.+\\.+\\

Далее вызываем диалог замены и используем в нём это регулярное выражение, не забыв установить соответствующую галочку.
По регулярным выражениям крайне рекомендую почитать в таком неожиданном месте, как Справка - Руководство.

супер, спасибо большое. осталось пожелание - если возможность сделать проверку на конец строки??
Code:
\\.+\\.+\\

чтоб не скакал по строчкам? в таком случае было бы просто идеально. сэкономоило бы тучу времени
Back to top
View user's profile Send private message
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5371

PostPosted: Sat Feb 23, 2013 4:49 pm    Post subject: Reply with quote

i0n0ff wrote:
я как можно проще сформулирую, пропуская все остальное: мне нужно изменить в плейлисте:
Code:
D:\!m\The XX\2009 - XX (CD 1)\01. Intro.flac
на
D:\!burned\some folder\01. Intro.flac
Стандарный диалог замены:
Code:
Что: ^.*([^\\]+)$
Чем: some folder\\\1
Back to top
View user's profile Send private message Send e-mail
i0n0ff



Joined: 23 Feb 2013
Posts: 4

PostPosted: Sun Feb 24, 2013 3:56 pm    Post subject: Reply with quote

Instructor
upd: спасибо, я не понял код, но похоже работает хорошо
Back to top
View user's profile Send private message
KDJ



Joined: 06 Mar 2010
Posts: 1361
Location: Poland

PostPosted: Sun Feb 24, 2013 4:27 pm    Post subject: Reply with quote

i0n0ff
Try this:
Code:
What: ^([^\n]*\\)[^\n]+(\\[^\n\\]*)$
With: \1!burned\\some folder\2
Back to top
View user's profile Send private message
i0n0ff



Joined: 23 Feb 2013
Posts: 4

PostPosted: Sun Feb 24, 2013 4:53 pm    Post subject: Reply with quote

KDJ
Instructor

эксперементировал, оба варианта работают идеально, спасибо Вам
во втором варианте есть еще привязка к локальному диску, в моем случае это конечно лишнее, хотя как правило б роли не играли. спасибо еще раз большое
Back to top
View user's profile Send private message
Fetser



Joined: 13 Nov 2009
Posts: 7

PostPosted: Wed Mar 06, 2013 2:51 pm    Post subject: Пакетная замена Reply with quote

Добрый день подскажите пожалуйста оптимальное решение пакетной замены текста в большом количестве файлов.
1 Обычная замена с регулярными выражениями работает на ура, но пар замены достаточно много и утомительно их менять.
2 Макросы оказывается не всегда работают на разных компьютерах и писать под каждый компьютер тоже утомительно.
3 Скрипт SearchReplace похоже имеет другой синтаксис и то что срабатывает в обычной замене не хочет работать в скрипте и опять же как сделать пакетную замену кусков текста я не нашёл.

Может кто подскажет в какую сторону копать?
Back to top
View user's profile Send private message
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5371

PostPosted: Thu Mar 07, 2013 6:36 am    Post subject: Reply with quote

Fetser
Шаблон скрипта для множественной замены во всех открытых документах (MDI/PMDI):
MultiReplace.js

Code:
var hMainWnd=AkelPad.GetMainWnd();
var lpFrameInit;
var lpFrameCur;

//Initial MDI frame
lpFrameInit=AkelPad.SendMessage(hMainWnd, 1288 /*AKD_FRAMEFIND*/, 1 /*FWF_CURRENT*/, 0);
lpFrameCur=lpFrameInit;

for (;;)
{
  AkelPad.TextReplace(0, "FindIt1", "ReplaceWith1", 0x280001 /*FRF_DOWN|FRF_BEGINNING|FRF_REGEXP*/, true);
  AkelPad.TextReplace(0, "FindIt2", "ReplaceWith2", 0x280001 /*FRF_DOWN|FRF_BEGINNING|FRF_REGEXP*/, true);
  AkelPad.TextReplace(0, "FindIt3", "ReplaceWith3", 0x280001 /*FRF_DOWN|FRF_BEGINNING|FRF_REGEXP*/, true);

  //Next MDI frame
  lpFrameCur=AkelPad.Command(4316 /*IDM_WINDOW_FRAMENEXT*/);
  if (!lpFrameCur || lpFrameCur == lpFrameInit)
    break;
}
Back to top
View user's profile Send private message Send e-mail
Fetser



Joined: 13 Nov 2009
Posts: 7

PostPosted: Thu Mar 07, 2013 9:41 am    Post subject: Reply with quote

Instructor wrote:
Fetser
Шаблон скрипта для множественной замены во всех открытых документах (MDI/PMDI):
MultiReplace.js

Code:
var hMainWnd=AkelPad.GetMainWnd();
var lpFrameInit;
var lpFrameCur;

//Initial MDI frame
lpFrameInit=AkelPad.SendMessage(hMainWnd, 1288 /*AKD_FRAMEFIND*/, 1 /*FWF_CURRENT*/, 0);
lpFrameCur=lpFrameInit;

for (;;)
{
  AkelPad.TextReplace(0, "FindIt1", "ReplaceWith1", 0x280001 /*FRF_DOWN|FRF_BEGINNING|FRF_REGEXP*/, true);
  AkelPad.TextReplace(0, "FindIt2", "ReplaceWith2", 0x280001 /*FRF_DOWN|FRF_BEGINNING|FRF_REGEXP*/, true);
  AkelPad.TextReplace(0, "FindIt3", "ReplaceWith3", 0x280001 /*FRF_DOWN|FRF_BEGINNING|FRF_REGEXP*/, true);

  //Next MDI frame
  lpFrameCur=AkelPad.Command(4316 /*IDM_WINDOW_FRAMENEXT*/);
  if (!lpFrameCur || lpFrameCur == lpFrameInit)
    break;
}


Спасибо огромное - работает отлично
Back to top
View user's profile Send private message
klopus



Joined: 21 Apr 2013
Posts: 5

PostPosted: Sun Apr 21, 2013 10:58 am    Post subject: Нужен совет по замене содержимого Reply with quote

Всем привет.
Столкнулся с такой проблемой:

имею

<Тег>0.354</Тег>

необходимо сделать замену на:

<Тег>0.4</Тег>

Пытался сделать как то так:

Менял <Тег>0.35*</Тег> на <Тег>0.4</Тег> получил <Тег>0.35*

Подскажите можно ли реализовать такие замены? Если можно то как?
Back to top
View user's profile Send private message
KDJ



Joined: 06 Mar 2010
Posts: 1361
Location: Poland

PostPosted: Sun Apr 21, 2013 12:05 pm    Post subject: Reply with quote

klopus
Replace dialog.

Simply, without regular expressions:
What: <Тег>0.354</Тег>
With: <Тег>0.4</Тег>

With regular expressions:
What: (?<=<Тег>0\.)\d\d(\d)(?=</Тег>)
With: \1

This last will replace
<Тег>0.xyz</Тег>
(where x,y,z any digit 0-9)
with
<Тег>0.z</Тег>
Back to top
View user's profile Send private message
Fr0sT



Joined: 24 Jul 2007
Posts: 876

PostPosted: Mon Apr 22, 2013 6:16 am    Post subject: Reply with quote

Регулярки включить,
Что: <Тег>0.35\d</Тег> Чем: <Тег>0.4</Тег>
Если же надо именно округлять числа, то поможет скрипт SearchReplace, там можно ставить собственную JS-функцию в качестве замены.
Back to top
View user's profile Send private message
klopus



Joined: 21 Apr 2013
Posts: 5

PostPosted: Mon Apr 22, 2013 8:35 am    Post subject: Reply with quote

а как на счет Vba? он с ним работает?
Back to top
View user's profile Send private message
opk44



Joined: 16 Jan 2010
Posts: 328

PostPosted: Mon Apr 22, 2013 9:44 am    Post subject: Reply with quote

klopus wrote:
а как на счет Vba? он с ним работает?
С VBA он точно не работает.
Если же Вы имели в виду VBS, то это что, киберспорт такой - писать на двух языках одновременно, а не поочередно?
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 ... 11, 12, 13, 14, 15  Next
Page 12 of 15

 
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