большое спасибо за помощь!
да, по первому совету у меня всё делает, и стандартным методом и с помощью скрипта - выполняет одинаково.. правда оставляет один дубль) и сдвигает на несколько пробелов строку с экстинф, на количество удалений..
по второму совету, с плюсами и запятыми для скрипта, тоже делает всё, только тут ещё и добавляет плюсы в начало строк, а так же в ту последнюю не удаяемую дублю, сдвигом накапливает не пробелы а ; если так делал
кстати тут помойму видно, что последний дубль не удаляет потому что пометка строк смешена не вверх а вниз
Posted: Thu Jul 12, 2012 9:49 pm
by Visitor7
FiLinX
По поводу SearchReplase... если использовать $1 + $2 + $3 то нужно включить опцию "замена с функцией", если использовать $1$2$3 то выключить. Плюсиков не станет.
И выражение чувствительно к табуляции. Строки
"mms://100automoto.tv/100gaz"
" mms://100automoto.tv/100gaz"
"mms://100automoto.tv/100gaz "
для него разные.
Posted: Thu Jul 12, 2012 9:54 pm
by TNX
FiLinX wrote:правда оставляет один дубль)
Последняя строка? Добавьте пустую строку в конец файла.
FiLinX wrote:и сдвигает на несколько пробелов строку с экстинф, на количество удалений..
Уберите лишний пробел в конце строк: "\1\2\3 " (<- тут) и "$1$2$3 " (<- тут).
Posted: Fri Jul 13, 2012 5:52 pm
by FiLinX
Visitor7
ох, даа.. эти отступы слева, я уж устал с ними бороться( любой текст, что я выделяю и копирую в браузере, и потом вставляю в акеле (либо сразу в браузе жму открыть в AkelPad, сделал кнопку там спец), так вот лишь первая строка с таких текстов начинается от начала, а все последующие сдвинуты на таб.. достало удалять уже(
а по обсуждаемому скрипту, да, убрал пустые табы со строк вначалах, и всё прошло без сдвига предпоследней строки.. но! ту ретро так и не удаляет) возможно у меня чё криво в системе
TNX
да, я добавил пустую в конец, но не помогло
Posted: Fri Jul 13, 2012 9:44 pm
by Visitor7
FiLinX wrote:эти отступы слева
Alt + Backspace, Ctrl + A и пару раз Shift + Tab. И отступов нет ни слева ни справа.
То же самое в Replace или SearchReplace(пресет "удалить пробелы..."):
Что: (^[ \t]+)|([ \t]+$) / С чем: с ничем / Галки на регулярных выражениях и многострочно.
FiLinX wrote:ту ретро так и не удаляет
Cкорее всего, справа у вас тоже отступы. Это у меня работает при любом раскладе:
//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*/);
}
Posted: Mon Jul 16, 2012 10:52 am
by mihanus_sa
помогите пожалуйста разобраться,уже не знаю искать
есть строчки
пробовал через SearchReplace.js искать
L1 (.*)
Wait (.*)
L2 (.*)
а дальше как незнаю.
заранее благодарен.
Posted: Mon Jul 16, 2012 11:21 am
by KDJ
mihanus_sa
Try SearchReplace.js with regular expressions
What: (L1 .+\nWait ).+(\nL2 .+)
With: $110$2
Posted: Mon Jul 16, 2012 12:07 pm
by Visitor7
Для стандартного:
(L1 [^\n]+\nWait )[^\n]+(\nL2 [^\n]+)
\0110\2
Мне вот эти таблички помогают: 1 , 2
Posted: Thu Jul 19, 2012 8:23 pm
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
не получается,не ищет почему-то
Posted: Thu Jul 19, 2012 10:00 pm
by Visitor7
mihanus_sa,
1. Закрались лишние пробелы в выражениях в полях "что" и "чем". В начале и конце, при копировании случается.
2. Текст не соответствует заданному. Уберите лишние пробелы в тексте: Alt + Backspace, Ctrl + A и пару раз Shift + Tab.
3. Внимательно отнеситесь к установке галок перед пробой. В данном случае, для Replace, поставьте только одну - на рег. выражения, а направление поиска выберите "с начала".
4. Если после включения Replace уже игрались или дергали текст, поставьте курсор перед первым символом.
5. Жмите первым делом "Найти далее" и смотрите, ищет или нет. Если ищет, то что.
6. Потом пробуйте заменять найденное "Заменой" и смотрите на что заменяет.
7. И только после пробуйте "Заменить всё".
После всех проверок пишите уже конкретный результат, как не работает и что не работает.
Posted: Fri Jul 20, 2012 8:55 am
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
помогло,нашёл и заменил,огромное спасибо
Posted: Fri Jul 20, 2012 9:54 am
by opk44
mihanus_sa wrote:...через обычную замену ... ничего не находит
Предположу, что Вами используется не последняя версия AkelPad. Многострочные рег.выр. появились только в версии 4.7.6, а кто-то, вероятно, уже работает на неофициальной "4.7.7 dev" (в ней также изменено поведение рег.выр-й). Отсюда и противоречие "там работает, а у здесь не работает".
Если вами используется версия 4.7.4 или 4.7.5, то попробуйте обновиться.
Posted: Sat Jul 21, 2012 12:25 pm
by Instructor
Visitor7 wrote:What: <td>[\s\S]*</td> Что: (<td>)[\s\S]*?(</td>)
Данные выражения целиком выделяют следующий текст: