View Issue Details

IDProjectCategoryView StatusLast Update
0002124Far ManagerRegExppublic2012-06-07 15:40
ReportershmuelAssigned To2useven10 
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Platformx86OSWindowsOS VersionXP SP3
Product Version3.0 
Target VersionFixed in Version3.0 
Summary0002124: Регекс /$/m работает "нестандартно"
DescriptionПри "многострочном поиске" (опция m) выражение /$/m соответствует не пустой строке, предшествующей символам, разделяющим строки, а этим самым символам. То-есть, длина совпадения при таком поиске может быть 1 (для \r или \n), либо 2 (для \r\n).

Не знаю, считать это багом или нет, но это поведение отличается от библиотек PCRE и Oniguruma, где $ никогда не "потребляет" символов.
TagsNo tags attached.
Build2723

Activities

JohnDoe

2012-06-06 15:26

updater   bugnote:0009304

Как воспроизвести?

2useven10

2012-06-06 15:27

developer   bugnote:0009305

как вы в этом убедились ? (воспроизводимость - всегда)

shmuel

2012-06-06 15:56

developer   bugnote:0009306

Поскольку поиск в редакторе Фара не многострочный, для проверки не подойдёт. Я проверял плагином LuaFAR for Editor (аналогичную проверку можно сделать и на Си):

far.Show(
  regex.match("abc\r", "/$/m") == "\r",
  regex.match("abc\n", "/$/m") == "\n",
  regex.match("abc\r\n", "/$/m") == "\r\n")

Получил true все три раза.

2useven10

2012-06-06 19:35

developer   bugnote:0009307

Last edited: 2012-06-06 19:36

View 2 revisions

ещё раз: почему вы решили, что match() у вас не позиция где начинается соответствие регулярному выражению, а строка ?
чему соответствует match() в LuaFAR - известно только вам.
давайте его реализацию через apiRegExpControl().

shmuel

2012-06-06 19:47

developer   bugnote:0009308

> ещё раз: почему вы решили, что match() у вас не позиция где начинается соответствие регулярному выражению, а строка ?
Потому что врапперы для регекс-библиотек пишу уже 8 лет. Функция match написана мной и проверена вдоль и поперёк.

> чему соответствует match() в LuaFAR - известно только вам.
Ну почему же, она описана в мануале LuaFAR.

> давайте его реализацию через apiRegExpControl().
А вам трудно проверить как apiRegExpControl() работает в описанном мною случае? Тогда сочувствую.

JohnDoe

2012-06-06 20:58

updater   bugnote:0009309

>Тогда сочувствую.
Зашибись...

shmuel

2012-06-06 21:45

developer  

test1.7z (4,423 bytes)

shmuel

2012-06-06 21:45

developer   bugnote:0009310

Чтобы не быть голословным, приложен тестовый плагин. На Си, без Луафара. Для LuaFAR-фобов замечу, что в этом Си-плагине 82 строки, тогда как то же самое на LuaFAR'е делается 4-мя строками, как было показано выше.

vskirdin

2012-06-06 23:01

administrator   bugnote:0009311

Last edited: 2012-06-06 23:02

View 2 revisions

> Для LuaFAR-фобов замечу
Предлагается подобные высказывания держать при себе.
Официально поддерживается только то, что есть сейчас. Отсюда вытекает простое требование - предоставлять тестовые плагины для багрепортов на Це. Никто и никогда не будет разбираться в том, почему Ваш lua-фан-арт не работает.

shmuel

2012-06-06 23:19

developer   bugnote:0009312

> Отсюда вытекает простое требование - предоставлять тестовые плагины для багрепортов на Це.

Требования предоставлять тестовые плагины нет и никогда не было. Данный багрепорт как он есть чётко и однозначно описывает поведение системы.

> Никто и никогда не будет разбираться в том, почему Ваш lua-фан-арт не работает.

Во-первых, не говорите за всех.
Во-вторых, данный баг-репорт не содержит никакого упоминания о Луафаре. Меня спросили, как я это воспроизвожу - я ответил.
В третьих, мой lua-фан-арт как раз то и работает превосходно.

vskirdin

2012-06-07 08:45

administrator   bugnote:0009313

> В третьих, мой lua-фан-арт как раз то и работает превосходно.
Это означает, что Инц исчерпан?

shmuel

2012-06-07 09:15

developer   bugnote:0009314

Валя, я же приложил плагин на Си, который демонстрирует описанное поведение. Луафар там не задействован (и вообще к данному Инцу никакого отношения не имеет).

2useven10

2012-06-07 12:32

developer   bugnote:0009315

Last edited: 2012-06-07 12:34

View 2 revisions

2shmuel
проверяйте -- http://sharapov-16.narod.ru/0/far3-m2124.7z

add: не только описанный баг а и 'не отвалилось ли что-то другое'...

shmuel

2012-06-07 13:31

developer   bugnote:0009316

Проверил, всё хорошо. Также запустил свои автоматические тесты для регекспов - ничего не отвалилось.

2useven10

2012-06-07 13:37

developer   bugnote:0009317

build 2723

2useven10

2012-06-07 13:56

developer   bugnote:0009318

ps: я не Lua-фоб и не Lua-фил, я Lua-пох.
несколько последних строчек из OpenW() было-бы достаточно...

shmuel

2012-06-07 15:12

developer   bugnote:0009319

> ps: я не Lua-фоб и не Lua-фил, я Lua-пох.

Уже теплее.

> несколько последних строчек из OpenW() было-бы достаточно...

Поскольку не телепат, не мог знать, чего вам было бы достаточно.

Issue History

Date Modified Username Field Change
2012-06-06 15:19 shmuel New Issue
2012-06-06 15:26 JohnDoe Note Added: 0009304
2012-06-06 15:27 2useven10 Note Added: 0009305
2012-06-06 15:56 shmuel Note Added: 0009306
2012-06-06 19:35 2useven10 Note Added: 0009307
2012-06-06 19:36 2useven10 Note Edited: 0009307 View Revisions
2012-06-06 19:47 shmuel Note Added: 0009308
2012-06-06 20:58 JohnDoe Note Added: 0009309
2012-06-06 21:45 shmuel File Added: test1.7z
2012-06-06 21:45 shmuel Note Added: 0009310
2012-06-06 23:01 vskirdin Note Added: 0009311
2012-06-06 23:02 vskirdin Note Edited: 0009311 View Revisions
2012-06-06 23:19 shmuel Note Added: 0009312
2012-06-07 08:45 vskirdin Note Added: 0009313
2012-06-07 09:15 shmuel Note Added: 0009314
2012-06-07 12:32 2useven10 Note Added: 0009315
2012-06-07 12:34 2useven10 Note Edited: 0009315 View Revisions
2012-06-07 13:31 shmuel Note Added: 0009316
2012-06-07 13:37 2useven10 Note Added: 0009317
2012-06-07 13:37 2useven10 Assigned To => 2useven10
2012-06-07 13:37 2useven10 Status new => feedback
2012-06-07 13:56 2useven10 Note Added: 0009318
2012-06-07 15:12 shmuel Note Added: 0009319
2012-06-07 15:12 shmuel Status feedback => assigned
2012-06-07 15:12 shmuel Status assigned => resolved
2012-06-07 15:40 2useven10 Build => 2723
2012-06-07 15:40 2useven10 Status resolved => closed
2012-06-07 15:40 2useven10 Resolution open => fixed
2012-06-07 15:40 2useven10 Fixed in Version => 3.0