Regular Expression Search and Replace (RESearch)

Здесь можно обсудить ваш любимый плагин.
mik
Posts: 6
Joined: Wed 11 Mar, 2009 14:42
Been thanked: 1 time

Re: Regular Expression Search and Replace (RESearch)

Post by mik »

Latest post of the previous page:

Cavaler wrote:Фильтр работает с текущей строки, а не с начала файла.
Согласен-работает, не подумал как то об этом.
Удобно бы было наличие пункта типа "Использовать весь файл" чтоб обрабатывалось с начала файла когда нужно.
DV
Posts: 439
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 23 times
Been thanked: 15 times

Re: Regular Expression Search and Replace (RESearch)

Post by DV »

RESearch 8.53, FAR 3.0 build 4034 x64.
Не могу разобраться с многострочным Grep и поиском в редакторе...
Предположим, есть текст вида:

из которого я хочу вытащить все пары строчек (в общем случае - несколько строк), начинающиеся с ключевого слова start.
Пробовал поиск и Grep по start.*\r?\n.+\r?\n и start.*\n.+\n - ничего не находит. Что я упустил?
User avatar
Cavaler
Posts: 1173
Joined: Mon 27 Jun, 2005 12:06
Been thanked: 5 times
Contact:

Re: Regular Expression Search and Replace (RESearch)

Post by Cavaler »

DV wrote:RESearch 8.53, FAR 3.0 build 4034 x64.
Не могу разобраться с многострочным Grep и поиском в редакторе...
Предположим, есть текст вида:

из которого я хочу вытащить все пары строчек (в общем случае - несколько строк), начинающиеся с ключевого слова start.
Пробовал поиск и Grep по start.*\r?\n.+\r?\n и start.*\n.+\n - ничего не находит. Что я упустил?
Ну, для начала, может я уже и сам все забыл - но Grep не бывает многострочным.
А в редакторе - спасет конструкция

Code: Select all

^start(\C*?)\n(?![^\n]+\n)
.
\C - это "любой символ вообще", можно использовать и точку если включена опция Dot matches newline.
А в конце - проверка, что после перевода строки не идет непустая строка.
\n хватает, если не стоит опция Use real EOL.
localhost
Posts: 11
Joined: Sun 21 Sep, 2014 15:58

Re: Regular Expression Search and Replace (RESearch)

Post by localhost »

BugReport.
RESearch 8.50, FAR 3.0 build 4114 x64.
Unicode версия плагина.

Делаю поиск GREP по большому количеству файлов в кодировке 1251.
Результаты выводятся плагином в кодировке UTF-16
Только русские буквы выглядят кракозябрями.
Пытаешься исправить нажиманием Shft-F8 - вообще все разваливается.
Нормально увидеть, что там написано никак невозможно.
ANSI версия плагина работает нормально

(От RESearch 8.53 пришлось вернуться обратно 8.50, т.к. падал при поиске в момент, когда находил первый файл - что-то там Exception in OpenDialogW. Увидел сообщение Tim Sobolev » Пн 25 авг, 2014 16:57 - помогло)
User avatar
Cavaler
Posts: 1173
Joined: Mon 27 Jun, 2005 12:06
Been thanked: 5 times
Contact:

Re: Regular Expression Search and Replace (RESearch)

Post by Cavaler »

localhost wrote:BugReport.
RESearch 8.50, FAR 3.0 build 4114 x64.
Unicode версия плагина.

Делаю поиск GREP по большому количеству файлов в кодировке 1251.
Результаты выводятся плагином в кодировке UTF-16
Только русские буквы выглядят кракозябрями.
Пытаешься исправить нажиманием Shft-F8 - вообще все разваливается.
Нормально увидеть, что там написано никак невозможно.
ANSI версия плагина работает нормально
А x86 версия? А какие региональные настройки?
localhost wrote:(От RESearch 8.53 пришлось вернуться обратно 8.50, т.к. падал при поиске в момент, когда находил первый файл - что-то там Exception in OpenDialogW. Увидел сообщение Tim Sobolev » Пн 25 авг, 2014 16:57 - помогло)
Не могу повторить хоть убейся...
localhost
Posts: 11
Joined: Sun 21 Sep, 2014 15:58

Re: Regular Expression Search and Replace (RESearch)

Post by localhost »

1. Региональные настройки: Windows 7 - везде "Русский", Far - "Main Language - English", Code Pages ANSI - 1251, OEM - 866
x86 сегодня чуть позже проверю и отпишусь
2. Готов помочь с поиском бага. Поставлю 8.53 и пришлю инфо с экрана Exception
Спасибо!
localhost
Posts: 11
Joined: Sun 21 Sep, 2014 15:58

Re: Regular Expression Search and Replace (RESearch)

Post by localhost »

1. x86 - Far 3.0 biuld 4117 x86 RESearch 8.50
Результат аналогичный x64
Пример вывода в файл:
Q:\120110\001M0120110.txt
>>>
╦шЎхтющ чр 10/01/2012

В кодировке 1251 это выглядит так:
Q:\120110\001M0120110.txt
>>>
Лицевой за 10/01/2012
localhost
Posts: 11
Joined: Sun 21 Sep, 2014 15:58

Re: Regular Expression Search and Replace (RESearch)

Post by localhost »

2. Вот такой Exception у плагина 8.53

Конкретно этот - поиск Multilene RegEx. Exception возник при нажатии Esc. Плагин при этом просканировал порядка 50 файлов, но ничего еще не нашел.

Code: Select all

╔════════════════════════ Exception occurred ════════════════════════╗
║ Exception:   Access violation (read from 0x0000000000000009)       ║
║ Address:     0x0000000003C2949B                                    ║
║ Function:    OpenW                                                 ║
║ Module:      r Manager Stable\Plugins\RESearch\RESearchU3 x64.dll  ║
╟────────────────────────────────────────────────────────────────────╢
║                    { Unload plugin } [ Debug ]                     ║
╚════════════════════════════════════════════════════════════════════╝
Last edited by localhost on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: [code]
User avatar
Cavaler
Posts: 1173
Joined: Mon 27 Jun, 2005 12:06
Been thanked: 5 times
Contact:

Re: Regular Expression Search and Replace (RESearch)

Post by Cavaler »

localhost wrote:BugReport.
RESearch 8.50, FAR 3.0 build 4114 x64.
Unicode версия плагина.

Делаю поиск GREP по большому количеству файлов в кодировке 1251.
Результаты выводятся плагином в кодировке UTF-16
Только русские буквы выглядят кракозябрями.
Пытаешься исправить нажиманием Shft-F8 - вообще все разваливается.
Нормально увидеть, что там написано никак невозможно.
ANSI версия плагина работает нормально
У меня возникла мысль. А текст вы ищете - русский или английский?
Просто если англйиский, то запросто возможна ситуация, когда плагин открывает файл, считая что он в кодировке OEM, и это совершенно не мешает найти в нем английский текст. А вывод русского текста конечно получается кривой.
Если так - поможет настройка Default codepage: ANSI
User avatar
Cavaler
Posts: 1173
Joined: Mon 27 Jun, 2005 12:06
Been thanked: 5 times
Contact:

Re: Regular Expression Search and Replace (RESearch)

Post by Cavaler »

localhost wrote:2. Вот такой Exception у плагина 8.53

Конкретно этот - поиск Multilene RegEx. Exception возник при нажатии Esc. Плагин при этом просканировал порядка 50 файлов, но ничего еще не нашел.

Code: Select all

╔════════════════════════ Exception occurred ════════════════════════╗
║ Exception:   Access violation (read from 0x0000000000000009)       ║
║ Address:     0x0000000003C2949B                                    ║
║ Function:    OpenW                                                 ║
║ Module:      r Manager Stable\Plugins\RESearch\RESearchU3 x64.dll  ║
╟────────────────────────────────────────────────────────────────────╢
║                    { Unload plugin } [ Debug ]                     ║
╚════════════════════════════════════════════════════════════════════╝
Не помогает. Можно слить RESearchPDB.rar, достать из него нужный .pdb и прицепиться отладчиком.
localhost
Posts: 11
Joined: Sun 21 Sep, 2014 15:58

Re: Regular Expression Search and Replace (RESearch)

Post by localhost »

2. Извиняюсь, но ранее ошибся - вылетает при поиске "Several-line regular expression"
От набора файлов, по которым идет поиск, Exception абсолютно не зависит.

First-chance exception at 0x053a9268 (RESearchU3 x64.dll) in Far.exe: 0xC0000005: Access violation reading location 0xffffffffffffffff.

Вот CallStack в момент Exception.

Code: Select all

>	RESearchU3 x64.dll!RunSearchUnicode(CFileBackend * pBackend, IFrontend * pFrontend)  Line 119 + 0x1f bytes	C++
 	RESearchU3 x64.dll!RunSearch(const wchar_t * szFileName, IFrontend * pFrontend)  Line 157 + 0xb bytes	C++
 	RESearchU3 x64.dll!SearchFile(const FarLib::FIND_DATA * FindData, std::vector<FarLib::CPluginPanelItem,std::allocator<FarLib::CPluginPanelItem> > & PanelItems)  Line 35 + 0x1b bytes	C++
 	RESearchU3 x64.dll!DoScanDirectory(std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > * strDirectory, std::vector<FarLib::CPluginPanelItem,std::allocator<FarLib::CPluginPanelItem> > & PanelItems, void (const FarLib::FIND_DATA *, std::vector<FarLib::CPluginPanelItem,std::allocator<FarLib::CPluginPanelItem> > &)* ProcessFile)  Line 526 + 0x69 bytes	C++
 	RESearchU3 x64.dll!ScanDirectories(std::vector<FarLib::CPluginPanelItem,std::allocator<FarLib::CPluginPanelItem> > & PanelItems, void (const FarLib::FIND_DATA *, std::vector<FarLib::CPluginPanelItem,std::allocator<FarLib::CPluginPanelItem> > &)* ProcessFile)  Line 630 + 0x51 bytes	C++
 	RESearchU3 x64.dll!FileFind(std::vector<FarLib::CPluginPanelItem,std::allocator<FarLib::CPluginPanelItem> > & PanelItems, bool ShowDialog, bool bSilent)  Line 201 + 0x13 bytes	C++
 	RESearchU3 x64.dll!OpenPluginFromFileMenu(int Item, bool ShowDialog)  Line 310 + 0x13 bytes	C++
 	Far.exe!000000013f24ec07() 	
Кусок кода в момент Exception:

Code: Select all

00000000053A922F  call        LocalPcreFree (5468530h)  
00000000053A9234  mov         r11,qword ptr [r14]  
00000000053A9237  mov         edx,1  
00000000053A923C  mov         rcx,r14  
00000000053A923F  call        qword ptr [r11]  
00000000053A9242  xor         al,al  
00000000053A9244  jmp         00000000053A9E36  
00000000053A9249  cmp         byte ptr [FAllCharTables (553A20Eh)],0  
00000000053A9250  jne         RunSearchUnicode+32Fh (53A929Fh)  
00000000053A9252  cmp         qword ptr [rbx+0A8h],0  
00000000053A925A  jne         RunSearchUnicode+302h (53A9272h)  
00000000053A925C  mov         rcx,qword ptr [rbx+50h]  
00000000053A9260  test        rcx,rcx  
00000000053A9263  je          RunSearchUnicode+302h (53A9272h)  
00000000053A9265  mov         rax,qword ptr [rcx]  
00000000053A9268  call        qword ptr [rax+40h] 
00000000053A926B  mov         qword ptr [rbx+0A8h],rax  
00000000053A9272  mov         qword ptr [rbx+50h],r12  
00000000053A9276  test        r14,r14  
00000000053A9279  je          RunSearchUnicode+328h (53A9298h)  
00000000053A927B  add         qword ptr [r13],0FFFFFFFFFFFFFFFFh  
00000000053A9280  jne         RunSearchUnicode+328h (53A9298h)  
00000000053A9282  mov         rcx,r13  
00000000053A9285  call        LocalPcreFree (5468530h)  
00000000053A928A  mov         r11,qword ptr [r14]  
00000000053A928D  mov         edx,1  
00000000053A9292  mov         rcx,r14  
00000000053A9295  call        qword ptr [r11]  
00000000053A9298  xor         al,al  
00000000053A929A  jmp         00000000053A9E36  
localhost
Posts: 11
Joined: Sun 21 Sep, 2014 15:58

Re: Regular Expression Search and Replace (RESearch)

Post by localhost »

Cavaler wrote: У меня возникла мысль. А текст вы ищете - русский или английский?
Просто если англйиский, то запросто возможна ситуация, когда плагин открывает файл, считая что он в кодировке OEM, и это совершенно не мешает найти в нем английский текст. А вывод русского текста конечно получается кривой.
Если так - поможет настройка Default codepage: ANSI
Ищу просто наборы цифр с пробелами!

По поводу найстройки - проверю вечером. Сейчас нет этих файлов под рукой.
User avatar
Cavaler
Posts: 1173
Joined: Mon 27 Jun, 2005 12:06
Been thanked: 5 times
Contact:

Re: Regular Expression Search and Replace (RESearch)

Post by Cavaler »

localhost wrote:2. Извиняюсь, но ранее ошибся - вылетает при поиске "Several-line regular expression"
А вот теперь поймал и исправил.
localhost
Posts: 11
Joined: Sun 21 Sep, 2014 15:58

Re: Regular Expression Search and Replace (RESearch)

Post by localhost »

2.
Cavaler wrote:
localhost wrote:2. Извиняюсь, но ранее ошибся - вылетает при поиске "Several-line regular expression"
А вот теперь поймал и исправил.

Поставил 8.54.
Отлично, теперь все ОК!
localhost
Posts: 11
Joined: Sun 21 Sep, 2014 15:58

Re: Regular Expression Search and Replace (RESearch)

Post by localhost »

localhost wrote:2.
Cavaler wrote:
localhost wrote:2. Извиняюсь, но ранее ошибся - вылетает при поиске "Several-line regular expression"
А вот теперь поймал и исправил.
Поставил 8.54.
Отлично, теперь все ОК!
Радость была преждевременной - падает, но теперь после сканирования нескольких сотен файлов и нахождения в них нескольких десятков.
Для вылавливания нужны свежие .pdb
localhost
Posts: 11
Joined: Sun 21 Sep, 2014 15:58

Re: Regular Expression Search and Replace (RESearch)

Post by localhost »

1.
localhost wrote:
Cavaler wrote: У меня возникла мысль. А текст вы ищете - русский или английский?
Просто если англйиский, то запросто возможна ситуация, когда плагин открывает файл, считая что он в кодировке OEM, и это совершенно не мешает найти в нем английский текст. А вывод русского текста конечно получается кривой.
Если так - поможет настройка Default codepage: ANSI
Ищу просто наборы цифр с пробелами!

По поводу настройки - проверю вечером. Сейчас нет этих файлов под рукой.
Поменял в настройках плагина Default codepage: ANSI
Теперь выводится в файл читабельно!
Спасибо!
Post Reply

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