Релиз AkelPad 4.7.4

Russian main discussion
  • Author
  • Message
Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Instructor wrote:Почему конструкция "[\s\S]*" должна остановится на кавычке?
Не знаю. Но в js находит. :D
Вон даже на википедии примеры с <.*> что-то находят.
А у нас пока что вот такое.

Берем SearchReplace.js и некий текст, заканчивающийся на q.
[\s\S]*q – найдет весь текст
[\s\S]*?q – найдет весь текст до первой «q»

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Нечто про «почему» можно почитать тут: http://pcre.org/pcre.txt («THE STANDARD MATCHING ALGORITHM»), только форма изложения что-то не фонтан.

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

Post by Instructor »

Infocatcher
Конструкция по логике "[\s\S]*" это аналог ".*", но текущая реализация особо обрабатывает только ".*", но не "[\s\S]*".
Вон даже на википедии примеры с <.*> что-то находят.
".*" должен обрабатывается как положено.

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Instructor wrote:Конструкция по логике "[\s\S]*" это аналог ".*"
Вообще, .* не находит переводы строк.
Другое дело, что сейчас вообще ничего не находит переводы строк. :D
Вдобавок могут быть вариации с [^нечто]*

Кстати, .* работает не как положено, а как .*? :)

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Пожелание: к поддержке $1, $2, ... добавить $& для вставки при замене всей найденной подстроки.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Конструкция по логике "[\s\S]*" это аналог ".*", но текущая реализация особо обрабатывает только ".*", но не "[\s\S]*".
Как-то получается баговато. Идентичные регулярные выражения должни найти одинаковый текст. Хотя нужно уточнить насчет "сравниваемости" этих выражений, но должны считаться идентичными. Да и "жадность" какая-то неопределенная: то * жадная, то не жадная.

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Не работает нежадный поиск вида
.{3,}?

Находит всю строку вместо трех символов:
.{2,3}

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

Post by Instructor »

FeyFre wrote:Как-то получается баговато...
Значит есть куда стремиться :)

LEN
Offline
Posts: 30
Joined: Thu Aug 21, 2008 9:31 pm

Post by LEN »

Перестал понимать что-либо!
Пытаюсь через Поиск и Замену добавить в конец всех строк свой текст:

Что: (.*)
Чем: $1_текст
[v] Регулярные выражения
(*) С начала

А вместо этого получаю:
$1_текст

Что я делаю не так?

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

Post by Instructor »

LEN
Сейчас при использовании регулярных выражений замена работает по всему тексту, а поиск построчный.

LEN
Offline
Posts: 30
Joined: Thu Aug 21, 2008 9:31 pm

Post by LEN »

Instructor

Писк-то находит, но почему не заменяет?

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

Post by Instructor »

Infocatcher wrote:Кстати, .* работает не как положено, а как .*? :)
Если будет яснее, то как положено ... автором.
Пожелание: к поддержке $1, $2, ... добавить $& для вставки при замене всей найденной подстроки.
Реализовано. Помимо "$&", "$0" действует аналогичным образом.
Не работает нежадный поиск вида
.{3,}?
В текущей реализации нету разделения на нежадный/жадный. Конструкции ".*", ".{3,}" и т.п. всегда "нежадные".
Находит всю строку вместо трех символов:
.{2,3}
^\d -> -
срежет все цифры в начале текста, а должно только первую.
4. При замене не поддерживается запоминание содержимого скобок.
LEN wrote:Писк-то находит, но почему не заменяет?
Тестовая

Offline
Posts: 2
Joined: Sat Jan 17, 2009 11:16 am

Post by Eugeny »

Если в редакторе включён режим переноса длинных строк, то при замене "(.*)" на "$&_текст" происходит замена на каждой отображаемой строке, а не на каждой реальной.

Я так понял, замена происходит только для тех случаев, когда паттерн соответствует целой строке. Например замена паттерна "^.+=" на "$&_текст" не происходит, и не происходит вообще ничего, никакой реакции программы. Проверить можно на примере любого ini файла.

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

Post by Instructor »

На sourceforge какие-то проблемы с сайтом - выпустить релиз пока не получается. Выкладываю текущую версию для проверки корректности работы с регулярными выражениями.

Два отличительных правила: поиск/замена построчные и поиск не жадный.

Тестовая

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Instructor wrote:для проверки корректности работы с регулярными выражениями.
Что: http
Чем: [$0]
Найти далее – Заменить – AkelPad
Описание
Неправильный путь приложения: %путь%\AkelPad.exe

Сигнатура проблемы
Имя проблемного события: APPCRASH
Имя приложения: AkelPad.exe
Версия приложения: 4.7.5.0
Отметка времени приложения: 4fa2c8e6
Имя модуля с ошибкой: AkelPad.exe
Версия модуля с ошибкой: 4.7.5.0
Отметка времени модуля с ошибкой: 4fa2c8e6
Код исключения: c0000005
Смещение исключения: 0002e4a9
Версия ОС: 6.1.7601.2.1.0.256.4
Код языка: 1049
Дополнительные сведения 1: 0a9e
Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения 3: 0a9e
Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789

Дополнительные сведения о проблеме
Код черпака: 2959763514


С «заменить все» не падает.
Post Reply