Regular Expression Search and Replace (RESearch)

Здесь можно обсудить ваш любимый плагин.
User avatar
Cavaler
Posts: 1184
Joined: Mon 27 Jun, 2005 12:06
Been thanked: 10 times
Contact:

Re: Regular Expression Search and Replace (RESearch)

Post by Cavaler »

Latest post of the previous page:

Insider wrote:
Cavaler wrote:Что характерно, MultiByteToWideChar(CP_UTF8) тоже обработал это криво, поэтому плагин этот файл и пропустил (обломалась внутренняя проверка некоторая)
UPD: а, нет, я не совсем прав. Просто феня в том, что тот символ в принципе не влезает в wchar_t, а я как-то игнорировал до сих пор подобные ситуации...
Дело не только в этом конкретном символе. Судя по всему, такая же проблема (ненахождение искомого в файле) происходит с символами 0xD0, причем не всегда, а лишь в определенных ситуациях, и я так и не смог определить, в каких именно.
Пример есть?
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Regular Expression Search and Replace (RESearch)

Post by John Doe »

В ScriptEvaluation.txt устаревшая информация о l(), n(), s() and r()
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Regular Expression Search and Replace (RESearch)

Post by HaRT »

Cavaler wrote:- Can probably work with ITF-8 files with symbols > 0xFFFF
Опечатка, она же в History.txt.
А ещё там в более старых версиях есть “tunring”, “Addanced”, “everythere”, “russian”, “occurences” (2 шт.), “fiels”, “sensivity” (3 шт.), “edtor”, “mistankenly”, “interruptable”, “elimintaing”, “ essage”, “progess”.
Это я к тому, что хорошо бы текст прогонять через проверку правописания перед включением в документ.
Со своей стороны я готов исправить эти опечатки в анонсах, как только они будут исправлены в History.txt.
Фар есть инструмент, а не нянька. © 2009 DrKnS
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: Regular Expression Search and Replace (RESearch)

Post by AleXH »

FAR3.0.3980,RS8.51, замена в редакторе.
Перестало передаваться значение переменной между пресетами в батче.

Code: Select all

Batch
  PS1
    F: \d+
    R: store('USD',match(0));result(named('USD'))
  PS2
    F: \d+
    R: result(match(0)+'-'+named('USD')+'-')
File
100
Результат
100--
Ожидается
100-100-
User avatar
Cavaler
Posts: 1184
Joined: Mon 27 Jun, 2005 12:06
Been thanked: 10 times
Contact:

Re: Regular Expression Search and Replace (RESearch)

Post by Cavaler »

AleXH wrote:FAR3.0.3980,RS8.51, замена в редакторе.
Перестало передаваться значение переменной между пресетами в батче.
Мда, баг из-за этого финального вызова скрипта, он вызвался с пустым match(0), который и записался в переменную...
Исправлю
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: Regular Expression Search and Replace (RESearch)

Post by AleXH »

Cavaler, что-то по фиксу пустого матча слышно? - Получилось, что часть скриптов было перетянуто на новую версию, 8.40 уже с ними не работает, а в 8.51 не работает передача значения между пресетами.
User avatar
Cavaler
Posts: 1184
Joined: Mon 27 Jun, 2005 12:06
Been thanked: 10 times
Contact:

Re: Regular Expression Search and Replace (RESearch)

Post by Cavaler »

AleXH wrote:Cavaler, что-то по фиксу пустого матча слышно? - Получилось, что часть скриптов было перетянуто на новую версию, 8.40 уже с ними не работает, а в 8.51 не работает передача значения между пресетами.
Ох блин, я билд давно выложил,а анонс забыл! Сейчас.
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: Regular Expression Search and Replace (RESearch)

Post by AleXH »

FAR3.0.4000,RS8.52, в макросах изменённый , замена в редакторе, скрипт farlua . Если нажать ESC, то выдаются диалоги от которых невозможно избавиться - приходится убивать фар.

F: ^\d{2}\t(\d+?)/(\d+?) R(1[5-9]|2[0-2])(C?)\t([\d/]+?)([H-Z])( XL)?\t(.+?)\t(.+?)\t(.*?)\t(Лето|Зима|Шип|M\+S)\t.*?\t([\d.]+?)\t([\d.]+?)\t([2-9]|[1-9]\d+?)(?:\t.*)?$
R: local f,width,profile,diameter,c,nx,speed,xl,vendor,model,country,season,price1,price2,quantity=0,tonumber(match(1)),tonumber(match(2)),tonumber(match(3)),match(4),match(5),match(6),match(7),match(8),match(9),match(10),match(11),tonumber(match(12)),tonumber(match(13)),tonumber(match(14))

Полный код скрипта существенно больше, но как видно из строки поиска и строки присваивания в скрипте diameter=tonumber(1[5-9]|2[0-2]), поэтому nil он быть не может принципиально.
User avatar
Cavaler
Posts: 1184
Joined: Mon 27 Jun, 2005 12:06
Been thanked: 10 times
Contact:

Re: Regular Expression Search and Replace (RESearch)

Post by Cavaler »

AleXH wrote:FAR3.0.4000,RS8.52, в макросах изменённый RESearch.lua, замена в редакторе, скрипт farlua .

Полный код скрипта существенно больше, но как видно из строки поиска и строки присваивания в скрипте diameter=tonumber(1[5-9]|2[0-2]), поэтому nil он быть не может принципиально.
Ну, для начала, ты в курсе, что локальные переменные между вызовами не сохраняются?
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: Regular Expression Search and Replace (RESearch)

Post by AleXH »

В данном случае ничего сохранять не нужно, скрипт сам в себе, полный
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Regular Expression Search and Replace (RESearch)

Post by John Doe »

И тем не менее, ваша переменная diameter неинициализирована.
Вы думаете RESearch виноват?

Update
Хотя да, RESearch виноват в том, что не позволяет при ошибке прервать процесс.
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: Regular Expression Search and Replace (RESearch)

Post by AleXH »

Она инициализирована в 9-ой строке, ей присвоено значение tonumber(match(3)) как и width, profile.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Regular Expression Search and Replace (RESearch)

Post by John Doe »

tonumber(nil)==nil
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: Regular Expression Search and Replace (RESearch)

Post by AleXH »

Она не может быть nil. Если строка матчится, то match(3)=(1[5-9]|2[0-2]).
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Regular Expression Search and Replace (RESearch)

Post by John Doe »

Да, вы это с самого начала указали.
Вероятно RESearch так и не пофиксили. Попробуйте в начало скрипта вставить if final() then return end.
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: Regular Expression Search and Replace (RESearch)

Post by AleXH »

Согласно ScriptEvaluation.txt:
Also, scripts can append additional information to the end of file after performing File / Editor Replace.
In order to do that, script can check value of final() function and return data when final()) is true.
If script didn't call final(), no data is appended.

Поскольку script can check value of final() function, а не script must check value of final() function, то ...

Но действительно работает, хоть это и не айс вставлять везде такое.
Post Reply

Return to “Обсуждение плагинов”