Page 12 of 13
Posted: Fri Nov 02, 2018 9:35 am
by konstazhoglo
YuS wrote:А ответы Вы читаете полностью?
Найдите 10 отличий:
Code: Select all
1. ^(.*?)$\s+?^(?=.*^\1$)
2. ^(.*?)$\s+?^(?=.*^\1$)
Первый шаблон напечатан
Ср Окт 31, 2018 6:08 pm в ответе
opk44, адресованном Вам. И он таки работает.
Второй - напечатали Вы
Чт Ноя 01, 2018 6:34 pm, с указанием того, что он якобы не работает.
Где логика?
Как бы подсказка:
ответы читаю полностью. А логика следующая в своем первом посте я ошибся в наборе неработающего шаблона, имелся в виду исправленый вариант, совпадающий с тем что был указан в сообщении opk44.
Но суть моего первого поста осталась прежней, что этот шаблон (исправленный) и предложенный opk44 не работает в akelpad. Прога виснет и вывести ее из этого состояния можно только тем, что принудительно завершить ее выполнение.
hence актуальным остается мой вопрос в конце предыдущего поста.
p.s. спасибо за предложенный вами шаблон с (?-s) в начале, он работает, но предыдущий без проблем работающий в notepad++ без (?-s) виснет наглухо в akelpad.
Posted: Fri Nov 02, 2018 2:56 pm
by YuS
opk44 wrote:YuS,
Поэтому наоборот, вместо (?-s) использовал бы (?s).
Все дело в том, что любой вариант включения захвата точкой всех символов, включая \n, у меня, например (также как и у
konstazhoglo), приводит к зависанию AP, в отличии от обратной опции...
Posted: Fri Nov 02, 2018 7:37 pm
by opk44
YuS
Ну, если уж быть точным, то зависания там не происходит.
Просто на естественных данных скорость расчета катастрофически падает с ростом числа строк и общего размера данных.
Попробовал на энциклопедическом словаре (строки до 75 символов).
100 строк - 3 сек
200 строк - 10 сек
300 строк - 35 сек
400 строк - 85 сек
500 строк - 162 сек
600 строк - 310 сек
Каждые дополнительные 100 строк дают удвоение времени работы (на моей машине).
Posted: Sat Nov 03, 2018 5:50 am
by konstazhoglo
opk44 wrote:YuS
Ну, если уж быть точным, то зависания там не происходит.
Просто на естественных данных скорость расчета катастрофически падает с ростом числа строк и общего размера данных.
Попробовал на энциклопедическом словаре (строки до 75 символов).
100 строк - 3 сек
200 строк - 10 сек
300 строк - 35 сек
400 строк - 85 сек
500 строк - 162 сек
600 строк - 310 сек
Каждые дополнительные 100 строк дают удвоение времени работы (на моей машине).
в моем файле было более 14000 строк т.е время выполнения "на вашем компе" 2^140 секунд, доживут не многие до конца обработки, скорее Земля налетит на небесную ось.

Вопрос почему такие грабли с этим шаблоном в akelpad а в notepad++ их нет? Ведь по идее реализации должна быть одна и та же обработки регэкспов.
Posted: Sat Nov 03, 2018 6:26 am
by YuS
opk44 wrote:YuS
Ну, если уж быть точным, то зависания там не происходит.
Может быть и так. Но, это если педантично подходить к самим терминам... а в реальных условиях, если интерфейс программы недоступен при обработке документа с простым текстом в 1Мб, хотя бы в течении нескольких минут, это уже можно считать зависанием... имхо.
opk44 wrote:
Просто на естественных данных скорость расчета катастрофически падает с ростом числа строк и общего размера данных.
Попробовал на энциклопедическом словаре (строки до 75 символов).
100 строк - 3 сек
200 строк - 10 сек
300 строк - 35 сек
400 строк - 85 сек
500 строк - 162 сек
600 строк - 310 сек
Каждые дополнительные 100 строк дают удвоение времени работы (на моей машине).
Так вот я и говорю, что тесты проводил в условиях приближенных к тем, которые оговорил задавший вопрос, а это:
количество строк примерно 14000
В общем, если время обработки стремится к бесконечности на документах сравнительно небольшого объема, то надо бы это дело как-то ограничить, наверное... ну, или какой-нибудь прогресс-бар привинтить, чтобы не возникало ощущения зависания интерфейса.
PS
А вообще, я бы немного оптимизировал регэксп:
Code: Select all
(?s)^([^\n\r]*)\s+?^(?=.*?^\1[\n\r])
- в таком виде, наверное, будут более приемлемые результаты:
несортированные строки в:
test.txt (utf8) 476,2kb, 15000 строк
время обработки: около 90сек.
итого: осталось 183 строки
или даже так:
Code: Select all
(?s)^([^\n\r]*+)\s+?^(?=.*?^\1[\n\r])
что гораздо быстрее. При тех же условиях:
время обработки: около 25сек.
если же строки отсортированы, то вообще:
время обработки: около 5-10сек.
Posted: Fri Dec 07, 2018 1:01 pm
by Deft
Подскажите как лучше реализовать несколько последовательных замен текста с учетом регулярных выражений по одному клику. Подумывал вариант с макросом, но со временем придется менять количество и вид замен, то есть заново его переписывать. Может какой-то плагин или скрипт умеет? На старте у меня только два столбика: найти-заменить 20 пар.
Posted: Fri Dec 07, 2018 2:24 pm
by YuS
Deft wrote:Может какой-то плагин или скрипт умеет?
FindReplaceEx.js
Регулярные выражения: двойной квантификатор плюс «++»
Posted: Sun Feb 17, 2019 11:44 am
by Eskander88
встретил в файле
.coder секции
QuotesRE: плагина
Coder::Plugin такое регулярное выражение:
Code: Select all
;==================================================================================================================================
;Flags Pattern "\BackRef=(FontStyle,ColorText,ColorBk) \BackRef=..." ParentID RuleID
;==================================================================================================================================
;...
0 "@[_a-z\d\-]++" "\0=(0,${TYPE},0)" -3 0
;...
подскажите пожалуйста, что означает паттерн «
@[_a-z\d\-]++» с двумя квантификаторами «
++»?
Re: Регулярные выражения: двойной квантификатор плюс «++»
Posted: Sun Feb 17, 2019 1:00 pm
by opk44
Eskander88 wrote:встретил в файле ... с двумя квантификаторами «++»?
Использование сверхжадных квантификаторов
Posted: Tue Jan 19, 2021 1:12 pm
by InFive
ребят, помогите , составить функцию.
задача: разбить диапазоны чисел, как образец
"content": "1 - 7",
чтобы они были по порядку в отдельных строках, чтобы получилось так
"content": "1",
"content": "2",
"content": "3",
"content": "4",
"content": "5",
"content": "6",
"content": "7",
и можно ли будет потом эту функцию использовать в скрипте FindReplaceFiles.js ?
Спасибо
Posted: Tue Jan 19, 2021 5:07 pm
by AZJIO
InFive
Можно за малое число телодвижений сделать универсальными скриптами: есть 3 скрипта заполнения колонок. Для начала генеруешь много строк: "content": "",
, например выделяешь 100 строк столбиком и вставляешь текст, получим 100 строк указанного текста. Потом ставишь курсор в первую и последнюю строку столбиком и вызываешь
один из скриптов заполнения числами.
Можно сгенерировать числа столбиком, а потом регулярным выражением окаймить их нужным текстом.
Posted: Wed Jan 20, 2021 7:53 am
by InFive
AZJIO
спасибо
Posted: Sun Jan 24, 2021 10:03 am
by InFive
ребят, помогите составить функцию
я поставил закладки на строки с помощью скрипта FindReplaceEx.js
числа в этих строках по разному
"code": ",4,5,",
"code": "8",
"code": ",4,5,6,7,8,9,",
можно ли увеличивать/уменьшать числа в строках с закладками?
чтобы обрабатывались любые числа в закладках
УЖЕ НЕ АКТУАЛЬНО - СДЕЛАЛ СВОЮ ЗАДАЧУ С ПОМОЩЬЮ КУЧИ РЕГУЛЯРОК И ПРОСТЕНЬКОЙ ФУНКЦИИ.
ИЗВИНИТЕ ЗА БЕСПОКОЙСТВО...
Posted: Sun Jan 24, 2021 12:35 pm
by opk44
InFive wrote:я поставил закладки на строки с помощью скрипта FindReplaceEx.js
...
можно ли увеличивать/уменьшать числа в строках с закладками?
чтобы обрабатывались любые числа в закладках
Что у вас за версия FindReplaceEx.js? Та что есть у меня, с закладками (Lineboard-plugin) не работает. Или поясните, что вы считаете закладками.
Posted: Sun Jan 24, 2021 1:03 pm
by InFive
opk44 wrote:Та что есть у меня, с закладками (Lineboard-plugin) не работает. Или поясните, что вы считаете закладками.
да, в этом скрипте это называется Пометить строки, но в скрипте TextReplace.js это называется Закладки, только в них можно делать замены, но только скрипт FindReplaceEx можно использовать для того, чтобы пометить строки нужные.
упс, оказывается и TextReplace.js может помечать строки, что-то я забыл об этом.
FindReplaceEx 2018-11-06
но вот не могу адаптировать функцию ($1)+(Number($2)+1) для скрипта TextReplace.js