поиск и замена

Russian main discussion
  • Author
  • Message
Offline
Posts: 12
Joined: Fri Oct 24, 2008 4:05 am
Location: где то рядом была Москва

Post by FiLinX »

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

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

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

Offline
Posts: 88
Joined: Sun Jun 03, 2012 8:15 am

Post by Visitor7 »

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.

TNX
Offline
Posts: 57
Joined: Thu Jul 12, 2012 10:59 am

Post by TNX »

FiLinX wrote:правда оставляет один дубль)
Последняя строка? Добавьте пустую строку в конец файла.
FiLinX wrote:и сдвигает на несколько пробелов строку с экстинф, на количество удалений..
Уберите лишний пробел в конце строк: "\1\2\3 " (<- тут) и "$1$2$3 " (<- тут).

Offline
Posts: 12
Joined: Fri Oct 24, 2008 4:05 am
Location: где то рядом была Москва

Post by FiLinX »

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

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

TNX
да, я добавил пустую в конец, но не помогло

Offline
Posts: 88
Joined: Sun Jun 03, 2012 8:15 am

Post by Visitor7 »

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

Code: Select all

//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*/);
}

Offline
Posts: 18
Joined: Fri Feb 24, 2012 1:12 pm

Post by mihanus_sa »

помогите пожалуйста разобраться,уже не знаю искать
есть строчки

Code: Select all

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: Select all

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 (.*)
а дальше как незнаю.
заранее благодарен.

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

mihanus_sa
Try SearchReplace.js with regular expressions

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

Offline
Posts: 88
Joined: Sun Jun 03, 2012 8:15 am

Post by Visitor7 »

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

Offline
Posts: 18
Joined: Fri Feb 24, 2012 1:12 pm

Post by mihanus_sa »

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
не получается,не ищет почему-то

Offline
Posts: 88
Joined: Sun Jun 03, 2012 8:15 am

Post by Visitor7 »

mihanus_sa,

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

Offline
Posts: 18
Joined: Fri Feb 24, 2012 1:12 pm

Post by mihanus_sa »

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
помогло,нашёл и заменил,огромное спасибо

Offline
Posts: 874
Joined: Sat Jan 16, 2010 2:03 pm

Post by opk44 »

mihanus_sa wrote:...через обычную замену ... ничего не находит
Предположу, что Вами используется не последняя версия AkelPad. Многострочные рег.выр. появились только в версии 4.7.6, а кто-то, вероятно, уже работает на неофициальной "4.7.7 dev" (в ней также изменено поведение рег.выр-й). Отсюда и противоречие "там работает, а у здесь не работает".
Если вами используется версия 4.7.4 или 4.7.5, то попробуйте обновиться.

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Visitor7 wrote:What: <td>[\s\S]*</td>
Что: (<td>)[\s\S]*?(</td>)
Данные выражения целиком выделяют следующий текст:

Code: Select all

<td></td></tr>
<tr>
<td width="210"> <img src="pic2.jpg" alt="" width="195" height="114" /></td>
Тестовая

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

The test version works correctly.

Offline
Posts: 88
Joined: Sun Jun 03, 2012 8:15 am

Post by Visitor7 »

Исправилось, спасибо.
Post Reply