| View previous topic :: View next topic |
| Author |
Message |
FeyFre
Joined: 07 Aug 2007 Posts: 1888 Location: Vinnitsa, Ukraine
|
Posted: Thu Jul 12, 2012 5:57 pm Post subject: |
|
|
| Quote: | | А SearchReplace скушал $1$2$3 только в таких видах: | Если стоит Replace with function, то единственный правильный вид конкатенации захватов - $1 + $2 + $3 |
|
| Back to top |
|
 |
FiLinX
Joined: 24 Oct 2008 Posts: 10 Location: где то рядом была Москва
|
Posted: Thu Jul 12, 2012 8:25 pm Post subject: |
|
|
большое спасибо за помощь!
да, по первому совету у меня всё делает, и стандартным методом и с помощью скрипта - выполняет одинаково.. правда оставляет один дубль) и сдвигает на несколько пробелов строку с экстинф, на количество удалений..
по второму совету, с плюсами и запятыми для скрипта, тоже делает всё, только тут ещё и добавляет плюсы в начало строк, а так же в ту последнюю не удаяемую дублю, сдвигом накапливает не пробелы а ; если так делал
кстати тут помойму видно, что последний дубль не удаляет потому что пометка строк смешена не вверх а вниз |
|
| Back to top |
|
 |
Visitor7
Joined: 03 Jun 2012 Posts: 88
|
Posted: Thu Jul 12, 2012 9:49 pm Post subject: |
|
|
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 |
|
 |
TNX
Joined: 12 Jul 2012 Posts: 22
|
Posted: Thu Jul 12, 2012 9:54 pm Post subject: |
|
|
| FiLinX wrote: | | правда оставляет один дубль) |
Последняя строка? Добавьте пустую строку в конец файла.
| FiLinX wrote: | | и сдвигает на несколько пробелов строку с экстинф, на количество удалений.. |
Уберите лишний пробел в конце строк: "\1\2\3 " (<- тут) и "$1$2$3 " (<- тут). |
|
| Back to top |
|
 |
FiLinX
Joined: 24 Oct 2008 Posts: 10 Location: где то рядом была Москва
|
Posted: Fri Jul 13, 2012 5:52 pm Post subject: |
|
|
Visitor7
ох, даа.. эти отступы слева, я уж устал с ними бороться( любой текст, что я выделяю и копирую в браузере, и потом вставляю в акеле (либо сразу в браузе жму открыть в AkelPad, сделал кнопку там спец), так вот лишь первая строка с таких текстов начинается от начала, а все последующие сдвинуты на таб.. достало удалять уже(
а по обсуждаемому скрипту, да, убрал пустые табы со строк вначалах, и всё прошло без сдвига предпоследней строки.. но! ту ретро так и не удаляет) возможно у меня чё криво в системе
TNX
да, я добавил пустую в конец, но не помогло |
|
| Back to top |
|
 |
Visitor7
Joined: 03 Jun 2012 Posts: 88
|
Posted: Fri Jul 13, 2012 9:44 pm Post subject: |
|
|
| 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 |
|
 |
mihanus_sa
Joined: 24 Feb 2012 Posts: 9
|
Posted: Mon Jul 16, 2012 10:52 am Post subject: |
|
|
помогите пожалуйста разобраться,уже не знаю искать
есть строчки
| 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 |
|
 |
KDJ
Joined: 06 Mar 2010 Posts: 1064 Location: Poland
|
Posted: Mon Jul 16, 2012 11:21 am Post subject: |
|
|
mihanus_sa
Try SearchReplace.js with regular expressions
What: (L1 .+\nWait ).+(\nL2 .+)
With: $110$2 |
|
| Back to top |
|
 |
Visitor7
Joined: 03 Jun 2012 Posts: 88
|
Posted: Mon Jul 16, 2012 12:07 pm Post subject: |
|
|
Для стандартного:
(L1 [^\n]+\nWait )[^\n]+(\nL2 [^\n]+)
\0110\2
Мне вот эти таблички помогают: 1 , 2 |
|
| Back to top |
|
 |
mihanus_sa
Joined: 24 Feb 2012 Posts: 9
|
Posted: Thu Jul 19, 2012 8:23 pm Post subject: |
|
|
| 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 |
|
 |
Visitor7
Joined: 03 Jun 2012 Posts: 88
|
Posted: Thu Jul 19, 2012 10:00 pm Post subject: |
|
|
| mihanus_sa, проверьте на распространенную лажу
1. Закрались лишние пробелы в выражениях в полях "что" и "чем". В начале и конце, при копировании случается.
2. Текст не соответствует заданному. Уберите лишние пробелы в тексте: Alt + Backspace, Ctrl + A и пару раз Shift + Tab.
3. Внимательно отнеситесь к установке галок перед пробой. В данном случае, для Replace, поставьте только одну - на рег. выражения, а направление поиска выберите "с начала".
4. Если после включения Replace уже игрались или дергали текст, поставьте курсор перед первым символом.
5. Жмите первым делом "Найти далее" и смотрите, ищет или нет. Если ищет, то что.
6. Потом пробуйте заменять найденное "Заменой" и смотрите на что заменяет.
7. И только после пробуйте "Заменить всё".
После всех проверок пишите уже конкретный результат, как не работает и что не работает. |
|
| Back to top |
|
 |
mihanus_sa
Joined: 24 Feb 2012 Posts: 9
|
Posted: Fri Jul 20, 2012 8:55 am Post subject: |
|
|
| 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 |
|
 |
opk44
Joined: 16 Jan 2010 Posts: 183
|
Posted: Fri Jul 20, 2012 9:54 am Post subject: |
|
|
| mihanus_sa wrote: | | ...через обычную замену ... ничего не находит | Предположу, что Вами используется не последняя версия AkelPad. Многострочные рег.выр. появились только в версии 4.7.6, а кто-то, вероятно, уже работает на неофициальной "4.7.7 dev" (в ней также изменено поведение рег.выр-й). Отсюда и противоречие "там работает, а у здесь не работает".
Если вами используется версия 4.7.4 или 4.7.5, то попробуйте обновиться. |
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4637
|
Posted: Sat Jul 21, 2012 12:25 pm Post subject: |
|
|
| 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 |
|
 |
KDJ
Joined: 06 Mar 2010 Posts: 1064 Location: Poland
|
Posted: Sat Jul 21, 2012 5:33 pm Post subject: |
|
|
| The test version works correctly. |
|
| Back to top |
|
 |
|
|
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
|
Powered by phpBB © 2001, 2005 phpBB Group
|