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 ... 16, 17, 18  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: 1888
Location: Vinnitsa, Ukraine

PostPosted: Thu Jul 12, 2012 5:57 pm    Post subject: Reply with quote

Quote:
А SearchReplace скушал $1$2$3 только в таких видах:
Если стоит Replace with function, то единственный правильный вид конкатенации захватов - $1 + $2 + $3
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
FiLinX



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

PostPosted: Thu Jul 12, 2012 8:25 pm    Post subject: Reply with quote

большое спасибо за помощь!
да, по первому совету у меня всё делает, и стандартным методом и с помощью скрипта - выполняет одинаково.. правда оставляет один дубль) и сдвигает на несколько пробелов строку с экстинф, на количество удалений..


по второму совету, с плюсами и запятыми для скрипта, тоже делает всё, только тут ещё и добавляет плюсы в начало строк, а так же в ту последнюю не удаяемую дублю, сдвигом накапливает не пробелы а ; если так делал


кстати тут помойму видно, что последний дубль не удаляет потому что пометка строк смешена не вверх а вниз
Back to top
View user's profile Send private message
Visitor7



Joined: 03 Jun 2012
Posts: 88

PostPosted: Thu Jul 12, 2012 9:49 pm    Post subject: Reply with quote

FiLinX
По поводу SearchReplase... если использовать $1 + $2 + $3 то нужно включить опцию "замена с функцией", если использовать $1$2$3 то выключить. Плюсиков не станет.
И выражение чувствительно к табуляции. Строки
"mms://100automoto.tv/100gaz"
" mms://100automoto.tv/100gaz"
"mms://100automoto.tv/100gaz "
для него разные.


Last edited by Visitor7 on Thu Jul 12, 2012 11:50 pm; edited 4 times in total
Back to top
View user's profile Send private message
TNX



Joined: 12 Jul 2012
Posts: 22

PostPosted: Thu Jul 12, 2012 9:54 pm    Post subject: Reply with quote

FiLinX wrote:
правда оставляет один дубль)

Последняя строка? Добавьте пустую строку в конец файла.

FiLinX wrote:
и сдвигает на несколько пробелов строку с экстинф, на количество удалений..

Уберите лишний пробел в конце строк: "\1\2\3 " (<- тут) и "$1$2$3 " (<- тут).
Back to top
View user's profile Send private message
FiLinX



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

PostPosted: Fri Jul 13, 2012 5:52 pm    Post subject: Reply with quote

Visitor7
ох, даа.. эти отступы слева, я уж устал с ними бороться( любой текст, что я выделяю и копирую в браузере, и потом вставляю в акеле (либо сразу в браузе жму открыть в AkelPad, сделал кнопку там спец), так вот лишь первая строка с таких текстов начинается от начала, а все последующие сдвинуты на таб.. достало удалять уже(

а по обсуждаемому скрипту, да, убрал пустые табы со строк вначалах, и всё прошло без сдвига предпоследней строки.. но! ту ретро так и не удаляет) возможно у меня чё криво в системе

TNX
да, я добавил пустую в конец, но не помогло
Back to top
View user's profile Send private message
Visitor7



Joined: 03 Jun 2012
Posts: 88

PostPosted: Fri Jul 13, 2012 9:44 pm    Post subject: Reply with quote

FiLinX wrote:
эти отступы слева
Alt + Backspace, Ctrl + A и пару раз Shift + Tab. И отступов нет ни слева ни справа.
То же самое в Replace или SearchReplace(пресет "удалить пробелы..."):
Что: (^[ \t]+)|([ \t]+$) / С чем: с ничем / Галки на регулярных выражениях и многострочно.
FiLinX wrote:
ту ретро так и не удаляет
Cкорее всего, справа у вас тоже отступы. Это у меня работает при любом раскладе:
script
Code:
//EXTM3U undoubler

if (AkelPad.GetMainWnd() && AkelPad.GetEditWnd())   //если есть документ
{
   var ourText = AkelPad.GetTextRange(0, -1);   //получить весь текст
   if (ourText.search(/^[\t \r]*#EXTM3U[^\r]*\r.*(#EXTINF\:)[^\r]*\r.*\1[^\r]*\r/) != -1)   //если текст в EXTM3U формате
   {
      ourText = ourText.replace(/(^[ \t]+)|([ \t]+$)/mig, "");   //убрать табы и пробелы по краям строк
      ourText = ourText.replace(/^\r*/mig, "");         //убрать пустые строки
      ourText = ourText.replace(/([^\r])$/i, "$1\r");      //если в конце текста нет перевода строки, добавить
      while (ourText.search(/(#EXTINF\:[^\r]*\r)([^\r]*\r)(.*)#EXTINF\:[^\r]*\r\2/mig) != -1)   //пока есть дубликаты
         ourText = ourText.replace(/(#EXTINF\:[^\r]*\r)([^\r]*\r)(.*)#EXTINF\:[^\r]*\r\2/mig, "$1$2$3");   //удалять дубликаты
      ourText = ourText.replace(/\r$/i, "");      //удалить пустую строку в конце текста
      AkelPad.SetSel(0,-1);                 //выделить весь текст
      AkelPad.ReplaceSel(ourText);              //заменить выделенное
      AkelPad.SetSel(0,0);                 //курсор в начало текста
   }
   else
      AkelPad.MessageBox(AkelPad.GetMainWnd(), "None EXTM3U format.", WScript.ScriptName, 16 /*MB_OK|MB_ICONSTOP*/);
}
Back to top
View user's profile Send private message
mihanus_sa



Joined: 24 Feb 2012
Posts: 9

PostPosted: Mon Jul 16, 2012 10:52 am    Post subject: Reply with quote

помогите пожалуйста разобраться,уже не знаю искать
есть строчки
Code:
L1 X
Wait Z
L2 X
Wait 54
L1 Y
Wait Z
L2 Y

необходимость заменить строчку с Wait Z межу L1 и L2 на Wait 10. Z рандомно взятое число.X и Y разные числа,но в одном блоке L1 и L2 они одинаковы.
пример
Code:
L1 706,828
Wait 19
L2 706,828

Wait 45

L1 886,591
Wait 48
L2 886,591

Wait 78

L1 782,832
Wait 56
L2 782,832

пробовал через SearchReplace.js искать
L1 (.*)
Wait (.*)
L2 (.*)
а дальше как незнаю.
заранее благодарен.
Back to top
View user's profile Send private message
KDJ



Joined: 06 Mar 2010
Posts: 1064
Location: Poland

PostPosted: Mon Jul 16, 2012 11:21 am    Post subject: Reply with quote

mihanus_sa
Try SearchReplace.js with regular expressions

What: (L1 .+\nWait ).+(\nL2 .+)
With: $110$2
Back to top
View user's profile Send private message
Visitor7



Joined: 03 Jun 2012
Posts: 88

PostPosted: Mon Jul 16, 2012 12:07 pm    Post subject: Reply with quote

Для стандартного:
(L1 [^\n]+\nWait )[^\n]+(\nL2 [^\n]+)
\0110\2
Мне вот эти таблички помогают: 1 , 2
Back to top
View user's profile Send private message
mihanus_sa



Joined: 24 Feb 2012
Posts: 9

PostPosted: Thu Jul 19, 2012 8:23 pm    Post subject: Reply with quote

KDJ wrote:
mihanus_sa
Try SearchReplace.js with regular expressions

What: (L1 .+\nWait ).+(\nL2 .+)
With: $110$2

Visitor7 wrote:
Для стандартного:
(L1 [^\n]+\nWait )[^\n]+(\nL2 [^\n]+)
\0110\2
Мне вот эти таблички помогают: 1 , 2

не получается,не ищет почему-то
Back to top
View user's profile Send private message
Visitor7



Joined: 03 Jun 2012
Posts: 88

PostPosted: Thu Jul 19, 2012 10:00 pm    Post subject: Reply with quote

mihanus_sa, проверьте на распространенную лажу

1. Закрались лишние пробелы в выражениях в полях "что" и "чем". В начале и конце, при копировании случается.
2. Текст не соответствует заданному. Уберите лишние пробелы в тексте: Alt + Backspace, Ctrl + A и пару раз Shift + Tab.
3. Внимательно отнеситесь к установке галок перед пробой. В данном случае, для Replace, поставьте только одну - на рег. выражения, а направление поиска выберите "с начала".
4. Если после включения Replace уже игрались или дергали текст, поставьте курсор перед первым символом.
5. Жмите первым делом "Найти далее" и смотрите, ищет или нет. Если ищет, то что.
6. Потом пробуйте заменять найденное "Заменой" и смотрите на что заменяет.
7. И только после пробуйте "Заменить всё".
После всех проверок пишите уже конкретный результат, как не работает и что не работает.
Back to top
View user's profile Send private message
mihanus_sa



Joined: 24 Feb 2012
Posts: 9

PostPosted: Fri Jul 20, 2012 8:55 am    Post subject: Reply with quote

Visitor7 wrote:
mihanus_sa, проверьте на распространенную лажу

1. Закрались лишние пробелы в выражениях в полях "что" и "чем". В начале и конце, при копировании случается.
2. Текст не соответствует заданному. Уберите лишние пробелы в тексте: Alt + Backspace, Ctrl + A и пару раз Shift + Tab.
3. Внимательно отнеситесь к установке галок перед пробой. В данном случае, для Replace, поставьте только одну - на рег. выражения, а направление поиска выберите "с начала".
4. Если после включения Replace уже игрались или дергали текст, поставьте курсор перед первым символом.
5. Жмите первым делом "Найти далее" и смотрите, ищет или нет. Если ищет, то что.
6. Потом пробуйте заменять найденное "Заменой" и смотрите на что заменяет.
7. И только после пробуйте "Заменить всё".
После всех проверок пишите уже конкретный результат, как не работает и что не работает.

все пункты проанализировал,убрал пробелы поставил только галочку регулярные выражения
Вашим вариантом
что (L1 [^\n]+\nWait )[^\n]+(\nL2 [^\n]+)
чем \0110\2
через обычную замену найти далее выводит окошко "поиск завершён" и ничего не находит
а вот через SearchReplace.js только с регулярными выражениями
что (L1 .+\nWait ).+(\nL2 .+)
чем $110$2
помогло,нашёл и заменил,огромное спасибо
Back to top
View user's profile Send private message
opk44



Joined: 16 Jan 2010
Posts: 183

PostPosted: Fri Jul 20, 2012 9:54 am    Post subject: Reply with quote

mihanus_sa wrote:
...через обычную замену ... ничего не находит
Предположу, что Вами используется не последняя версия AkelPad. Многострочные рег.выр. появились только в версии 4.7.6, а кто-то, вероятно, уже работает на неофициальной "4.7.7 dev" (в ней также изменено поведение рег.выр-й). Отсюда и противоречие "там работает, а у здесь не работает".
Если вами используется версия 4.7.4 или 4.7.5, то попробуйте обновиться.
Back to top
View user's profile Send private message
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 4637

PostPosted: Sat Jul 21, 2012 12:25 pm    Post subject: Reply with quote

Visitor7 wrote:
What: <td>[\s\S]*</td>
Что: (<td>)[\s\S]*?(</td>)
Данные выражения целиком выделяют следующий текст:
Code:
<td></td></tr>
<tr>
<td width="210"> <img src="pic2.jpg" alt="" width="195" height="114" /></td>
Тестовая
Back to top
View user's profile Send private message Send e-mail
KDJ



Joined: 06 Mar 2010
Posts: 1064
Location: Poland

PostPosted: Sat Jul 21, 2012 5:33 pm    Post subject: Reply with quote

The test version works correctly.
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 ... 16, 17, 18  Next
Page 12 of 18

 
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