PCREsearch как пользоваться?
Select messages from
# through # FAQ
[/[Print]\]

Total Commander -> Плагины Total Commander

#1: PCREsearch как пользоваться? Author: Mailk PostPosted: Fri Jan 22, 2016 19:37
    —
Кто ни буть может написать инструкцию на русском к плагину PCREsearch ? А то вроде крутой плагин ну такой замороченный что не могу разобратся...

#2:  Author: FlasherLocation: Москва PostPosted: Fri Jan 22, 2016 20:15
    —
Если речь про настройщик (поскольку в остальном он ничем от остальных контентных плагинов не отличается), то переводить Readme за бесплатно тут вряд ли кто-то возмётся. Другое дело - решать конкретно поставленные задачи.

Last edited by Flasher on Fri Jan 22, 2016 21:06; edited 1 time in total

#3:  Author: Mailk PostPosted: Fri Jan 22, 2016 21:00
    —
Вопрос про настроики и тд. Вот нужно вытащить версию SolidWorks из файлов . все попробывал не чего неполучается. Вот думаю только этот сможет плагин. Дело в том что SW имеет бяку комерчесскую выше стоящие версии не совместимы и иногда приходится с этим мучатся.
Да и воопще есть много файлов разных и хочется вытащить инфу.

#4:  Author: Skif_off PostPosted: Sat Jan 23, 2016 02:04
    —
Mailk
Вы бы выложили пару-тройку файлов разных версий... Что искать-то?

Скорее всего придётся воспользоваться Script Content Plugin (последнюю версию брать в теме плага): например, в моём лаунчере (на AutoIt) для DC х86+х64 версия DC определяется тупым чтением как тесктовый файл doublecmd.exe (не целиком, конечно, а кусок по формуле "(размер / 3.5) / 2"), а потом так:
Code:
; убираются непечатные символы
$sText = StringRegExpReplace($sText,'[\x00-\x1f]','')
; убираются все символы, кроме точки, пробела, латинских букв и цифр
$sText = StringRegExpReplace($sText,'(?i)[^\.a-z0-9 ]','')
; и потом ищу нужное
$V = StringRegExp($sText, '(?i)DC v[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,2} (?>alpha|beta) Rev\. [0-9]{4}', 1)

Т.е. за один проход может не получиться.

Добавлено:
Или придётся искать по смещению, которое нужно сначала найти...

#5: Вот информация по формату Author: Mailk PostPosted: Sun Feb 07, 2016 21:52
    —
http://help.solidworks.com/2015/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.imodeldoc2~versionhistory.html

как вытащить инфу?
[/img]

по контр пддаун открывает фаил и показывает версию.
Но что то не нашел бинаром. Есть возможность вытаскивать инфу? Помогите.

#6:  Author: FlasherLocation: Москва PostPosted: Sun Feb 07, 2016 22:33
    —
Никто не поможет, пока не будут выложены файлы с версиями. Неужели неясно?

#7:  Author: Mailk PostPosted: Mon Feb 08, 2016 00:02
    —
Исправился https://yadi.sk/d/LJbohZoMoTnDS
Файлы образцы могу еще кинуть.

#8:  Author: FlasherLocation: Москва PostPosted: Mon Feb 08, 2016 11:18
    —
См. сюда.

#9:  Author: Mailk PostPosted: Sun Feb 28, 2016 20:17
    —
Можно спросить переименовать фаил (pdf/djv) ПО ТЕКСТУ СОДЕРЖАЩИМУСЯ ГДЕ НИБУТЬ В ФАЙЛЕ, например "абс.132.1421.00 .. 20символов после", или слова "патент 12356...50-100 символов после. как выкусить часть текста в колонку или в коментарий чтоб преименовать фаил по этому куску текста . Текст получается наложением фотки и из распознования файн риадером текста в пдф формате например.

#10:  Author: FlasherLocation: Москва PostPosted: Sun Feb 28, 2016 20:57
    —
Прежде чем мудрить, xpdfsearch смотреть на предмет нужного поля не пробовал?

#11:  Author: Mailk PostPosted: Sun Feb 28, 2016 21:14
    —
Если я правильно понял это плагин может искать текст в меню поиска..
но выводить не чего не может, кроме данных о документе.
А документ создается программой в потоковом режиме. Распозгование картинки и замена имени 0001.pdf на содержание по ключевым строчкам , причем они могут быть разные в плане нахождения выше -ниже. Нужно именно найти по ключивым словам и "выкусить" в колонку или еще куда. чтоб присвоить имя файлу.


Last edited by Mailk on Sun Feb 28, 2016 22:00; edited 2 times in total

#12:  Author: FlasherLocation: Москва PostPosted: Sun Feb 28, 2016 21:39
    —
Mailk
"не чего не моет", "докуменьте", "Распозгование", "ключивым", "тоб". Включи в браузере проверку ошибок, я тебя умоляю. Неужели твой диплом инженера так же написан?

Плагин ищет не в меню поиска, а в файлах с выводом полей данных, первую строку и начало документа в частности, которые корректируются либо длиной либо заменой с рег. выражениями. В колонку ничего выводить не требуется, ещё раз повторяю.

#13:  Author: Mailk PostPosted: Mon Feb 29, 2016 00:18
    —
Положил тест файлы по ссылке старой в папке "Тест файлы PDF"
как они идут и после распознования как выглядят.
https://yadi.sk/d/LJbohZoMoTnDS/%D0%A2%D0%B5%D1%81%D1%82%20%D1%84%D0%B0%D0%B9%D0%BB%D1%8B%20PDF

#14:  Author: FlasherLocation: Москва PostPosted: Mon Feb 29, 2016 01:26
    —
0001.pdf > Патент на изобретение №222396-00000001.pdf
Code:
Маска:          [=xpdfsearch.Начало документа]
...расширения:  [N].[E]
Найти:          (\d{6})
Заменить на:    Патент на изобретение №$1-0000
☑ Рег. выраж.  ☑ Подстан.

#15:  Author: Mailk PostPosted: Tue Mar 08, 2016 14:39
    —
Навел парядок с торент файлами. Много файлов скаченно, но имя у них абракадабра. прописал регулярное выражение (первое свое) поправте что не так . показывает имя торент файла ( то что при запуске торента показывает). само выражение вот:

:name....(.*)12:piece lengthi

тип вывода $1$3\x20

может кто подкинет свои решения для других файлов!?

одна проблема некоторые торенты имеют не "правильную" кодировку, приходится преименовывать имя транслитом, но это все равно быстро .
может кто подскажет как менять кодировку вывода ?

Posted after 18 minutes:

Попытался для файлов Solidworks вывести данные не получается.. знаний по регулярным не хватает.

#16:  Author: FlasherLocation: Москва PostPosted: Tue Mar 08, 2016 15:40
    —
Mailk wrote:
поправте что не так

Опять мудришь. Есть же [=tctorrent.Название].

#17:  Author: Mailk PostPosted: Tue Mar 08, 2016 17:33
    —
Да, на мудрил! Как wlx стоит, в свое время не ставил как wdx, странно что у других wdx нет имени... думал что и не показывают...
Все равно интересен был опыт регулярных выражений, мощь плагина понравилась! Жалко что нет заготовок готовых, например нахождения "данных" в ворде или ехеле в начале или конце.
например
(начало индификации)"нужные данные"(конец индификации)

#18:  Author: Skif_off PostPosted: Sun Jul 03, 2016 16:55
    —
Продолжение отсюда:
Аля wrote:
Попробовала сделать новый набор колонок и вывести значение "в процессе" - добавила колонку "Line count", по факту оно выводит в папке значения 1 либо 0, то есть 1, как я поняла, если соответствует забитому "в процессе", и 0 - если не соответствует.

Не совсем так, готовое поле Line count показывает количество найденных совпадений с регулярным выражением: 0 - не найдено, 1 - найдено одно совпадение и т.д. Поэтому правильнее будет всё-таки в поисковом запросе указать не "значение=1", а "значение>0". Line count было взято для примера ибо ближе всего к вашей задаче и потребовало минимум изменений и пояснений.
Аля wrote:
можно ли таким же образом, как поиск по закончен/в процессе, вытащить и остальные данные из "шапки" страницы и сделать из этого набор колонок?

Да, только нужно подходящее регулярное выражение.
Аля wrote:
можно ли одновременно вывести несколько параметров (например, закончен\в процессе, количество частей и тд.) в разные колонки ...?

PCREsearchConfig.exe служит для добавления/изменения полей плагина, вы можете добавить свои поля: просто создавайте новое (новые) с тем же набором опций (только имена дайте попонятнее Smile)
Аля wrote:
возможно заставить выводить в колонке сам текст?

Возможно. Для этого нужно будет изменить значение Field type на String output и разобраться с Replace string (для начала напишите там только "$0" без кавычек - тогда плагин отдаст найденное целиком).
Например:
- создаёте в плагине поле "Status";
- выражение "(Статус:</b>\n)(в процессе)"
- в Replace string напишете "$2"
- создаёте в ТС пользовательский набор колонок: ваше созданное поле "Status", даёте имя колонке, например, "Статус".
- смотрите, что получилось.
И так сколько угодно (в разумных пределах, конечно).

#19:  Author: Аля PostPosted: Sun Jul 03, 2016 17:42
    —
Skif_off,

сделала, как Вы сказали, но не могу найти это созданное поле для того, чтобы добавить его в набор колонок.
По идее, оно же должно появиться и в поиске с помощью шаблона, как поле Line count, и с помощью него можно искать?

Прикрепляю скриншоты, думаю, опять где-то не доделала, посмотрите, пожалуйста.
http://s020.radikal.ru/i710/1607/b7/96d7c44a5d7e.jpg
http://s019.radikal.ru/i604/1607/ac/7884225f3435.jpg

#20:  Author: StaniclawLocation: Ташкент PostPosted: Sun Jul 03, 2016 18:51
    —
Аля
Нужно изменить число в выпадающем списке ''Fields'', который показывает, сколько полей будут выводиться в ''Тотале'' как свойства; эти поля отмечены стрелкой. В показанном на скриншоте случае это число должно быть не меньше шестнадцати.

#21:  Author: Аля PostPosted: Sun Jul 03, 2016 19:53
    —
Staniclaw,

пробовала и до этого, но не догадалась перезапустить TC.
Такой вопрос: возможно ли в данном поле сделать вывод нескольких вариантов,
т.е. запрос вроде
(Статус:</b>\n)(в процессе) или
(Статус:</b>\n)(закончен) или
(Статус:</b>\n)(...)

соответственно, выводит либо "в процессе", либо "закончен" либо еще варианты?
Спасибо!

#22:  Author: StaniclawLocation: Ташкент PostPosted: Sun Jul 03, 2016 20:30
    —
Аля wrote:
Такой вопрос: возможно ли в данном поле сделать вывод нескольких вариантов,
т.е. запрос вроде
(Статус:</b>\n)(в процессе) или
(Статус:</b>\n)(закончен) или
(Статус:</b>\n)(...)

соответственно, выводит либо "в процессе", либо "закончен" либо еще варианты?
Теоретически, должно как-то так, но я не проверял.
Code:
<b>Статус:</b>\n(.+?)\n<br/>
''Replace String'' должна содержать $1.
Аля wrote:
пробовала и до этого, но не догадалась перезапустить TC.
Перезапускать как раз не обязательно, достаточно выполнить команду cm_UnloadPlugins.

Добавлено спустя 1 час 38 минут:

Из-за сложных отношений плагина с переносами строк выражение может не сработать. В таком случае имеет смысл заменить на переносы строк последовательности \n (при этом в строке состояния настройщика появится соответствующее предупреждение):
Code:
<b>Статус:</b>
(.+?)
<br/>

#23:  Author: Skif_off PostPosted: Sun Jul 03, 2016 23:09
    —
Staniclaw wrote:
Из-за сложных отношений плагина с переносами строк

Можно поподробнее? Плагином пользовался не часто, не сталкивался.

Наверное, сам как-то так попробовал бы:
Code:
<b>Статус:</b>[\r\n]*([^\r\n]+?)[\r\n]*<br

т.к. некоторые способы причёсывания HTML (Tidy и прочее) ставят пробел перед слэшем и в силу скромных знаний не люблю точку в регэкспах (не так наглядно и в некоторых реализациях точка не включает \n).

#24:  Author: StaniclawLocation: Ташкент PostPosted: Mon Jul 04, 2016 00:08
    —
Skif_off wrote:
Staniclaw wrote:
Из-за сложных отношений плагина с переносами строк

Можно поподробнее?
Можно:
Skif_off wrote:
в некоторых реализациях точка не включает \n).
Как и в этой. Хотя ожидается, что включает, ведь, как написано в руководстве, точка обозначает любой символ. В т. ч. и символ перевода строки.

#25:  Author: Skif_off PostPosted: Mon Jul 04, 2016 01:24
    —
Staniclaw wrote:
ведь, как написано в руководстве, точка обозначает любой символ. В т. ч. и символ перевода строки.

Нет, это же синтаксис PCRE, в руководстве написано: any character except newline, newline - это именно "\n". В Notepad++, например, в диалоге поиска/замены есть отдельная галочка под это дело (включает в точку и \n).

P.S. Предпочитаю не использовать точку, т.к в AkelPad, например, своя реализация, пусть и схожая с PCRE, есть ещё и POSIX (grep, куда без него), JScript, зато в AutoIt чистый PCRE - зоопарк, в общем Smile Стараюсь, чтобы везде было одинаково.

#26:  Author: StaniclawLocation: Ташкент PostPosted: Mon Jul 04, 2016 10:12
    —
Skif_off wrote:
в руководстве написано: any character except newline, newline - это именно "\n".
А, проглядел... Embarassed

#27:  Author: Skif_off PostPosted: Mon Jul 04, 2016 15:55
    —
Автор таки добавил функционал, аналогичный Regexp Content plugin:
[v] String output
[v] Search in filename only

#28:  Author: BeardFury78 PostPosted: Tue Nov 20, 2018 22:52
    —
Плагин не работает с xml файлами. После переименования расширения на txt заработало. Можно как-то включить поддержку xml файлов?

#29:  Author: Monarch-LFV PostPosted: Fri Feb 12, 2021 12:13
    —
Не работает:
Code:
regex4=\A(?:.*\R){1}(.*)\R?
должна отображаться только вторая строка (Second Line), то есть первую вроде как должен пропускать выражением (?:...), но не пропускает, даже в тестере.

#30:  Author: Skif_off PostPosted: Fri Feb 12, 2021 14:14
    —
Monarch-LFV
А если упростить
Code:
^[^\r\n]+[\r\n]+([^\r\n]*)

?

Есть плагин Text Line, возможно, будет удобнее?

#31:  Author: Monarch-LFV PostPosted: Sat Feb 13, 2021 03:02
    —
Skif_off
Спасибо, но все также не работает, также включает первую строку.
Вообще постановка задачи следующая:
Имеется много PDF файлов (поэтому плагин Text Line не подойдет) по определенной форме:
Code:
Арендодатель:
Имя Арендодателя
Адрес площадки:
   Субъект РФ, г. Такой-то, ул. Такая-то, 500 м севернее дома №5, объект АО "Фирма"
Координаты:
дд,ддддд ш,шшшшш

Нужно в поле выдернуть адрес, при этом, адрес может быть написан в одну или несколько строк, то есть критерий выбора должен быть от фразы "Адрес площадки:" и до фразы "Координаты:", без включения оных.
Попробовал написать регулярку такую:
Code:
(?:\QАдрес площадки:\E.*\R)(.*\R)+(?:\QКоординаты:\E)

Но в тестере выделяет все вместе с фразой "Адрес площадки:" и "Координаты:", хочется исключить эти фразы, чтоб только чистый адрес был. И еще плюс убрать лишние начальные пробелы из строки с адресом (если таковые будут).

#32:  Author: Skif_off PostPosted: Sat Feb 13, 2021 05:17
    —
Monarch-LFV
Как-то так
Code:
(?:\QАдрес площадки:\E)\s+([^\r\n]+?)\s+(?:\QКоординаты:\E)

?
В Replace String - $1

#33:  Author: Monarch-LFV PostPosted: Sat Feb 13, 2021 09:07
    —
Skif_off
Ваш код не работает, даже если с Replace String - $1 или $0. Тестер говорит "нет совпадений".
Но вы меня натолкнули на мысль и все получилось.
Code:
(\QАдрес площадки:\E.*\R\s*)((.*\R)+)(\QКоординаты:\E)

replace string - $2

#34:  Author: Skif_off PostPosted: Sat Feb 13, 2021 12:03
    —
Наверное, неудачно выбрал сайт для тестирования (или какие-то тонкости в реализации у плагина). Я не ошибся, в файлах используется UTF-8, а не UTF-16?

Прошу прощения за любопытство, если вы решили избавится от (?:шаблон), то какой смысл использовать обычные группы? Так
Code:
\QАдрес площадки:\E.*\R\s*((.*\R)+)\QКоординаты:\E

с $1 не работает?
\R точно необходима, \s не достаточно?
Если правильно понял, отсутствие \s перед "\QКоординаты:\E" приводит к захвату переноса строк в конце адреса.

Добавлено спустя 59 минут:

По идее \s включает в себя не только пробел и табуляцию, но и \r с \n - нет смысла добавлять и \R, проверил в плагине
Code:
\QАдрес площадки:\E\s*(.*)\s*\QКоординаты:\E

с Field type=String Output и Replace string=$1, вроде работает.
(Для теста накидал текстовые файлы в Win-1251 и UTF-8, с \n и \r\n.)

#35:  Author: Monarch-LFV PostPosted: Sat Feb 13, 2021 16:14
    —
Skif_off
Отчасти вы правы:
1. скобки групп первой и последней не нужны и тогда с $1 работает.
2. \R действительно не нужно, так как \s включает перенос строки (хотя в хелпе этого не нашел).
3. Отсутствие \s перед "\QКоординаты:\E" приводит к захвату переноса строк, но это не имеет значения, так как в конечном итоге все равно получаем одну строку в поле.
4. А вот в последнем вашем примере в группе только (.*), в хелпе сказано, что он не включает новую строку, соответвенно действует только до конца строки, поэтому в любом случае нужно ((.*\R)+).
В итоге получаем адаптированную рабочую регулярку:
Code:
\QАдрес площадки:\E.*\s*((.*\R)+)\QКоординаты:\E

PS. По поводу кодировок - это наверное было бы справедливо к тектовым файлам, к PDF это не применимо, по крайней мене, я даже не знаю как посмотреть кодировку PDF.

#36:  Author: Skif_off PostPosted: Sat Feb 13, 2021 17:04
    —
2. В хелпе с плагином упомянут "пробельный символ", но это синтаксис PCRE, более подробное описание найти в сети не проблема.
3. Это не вылезет боком, например, при копировании содержимого всех колонок, в подсказке или при использовании поля иным способом?
4. Ориентировался на ваш пример выше.Тогда логичнее "([.\n]+)" и ".*\s*" перед группой выглядит непонятно, т.е. в итоге:
Code:
\QАдрес площадки:\E\s*([.\n]+)\s*\QКоординаты:\E


P.S. Вы потрошите PDF как текст, значит, какая-то кодировка для текста там есть, можно открыть в текстовом редакторе и посмотреть. В принципе, плагин работает и с ANSI, и с UTF-8, значит, можно не парится.

P.P.S. Не настаиваю, просто интересно и немного перфекционизма сверху Smile

#37:  Author: Monarch-LFV PostPosted: Sun Feb 14, 2021 05:22
    —
Skif_off
3. Конструкция группы подразумевает, что в конце группы будет в любом случае снос строки.
4.1. Конструкция "([.\n]+)" отказывается работать, из-за точки внутри кавдратных скобок, нашел в интернете, что такое недопустимо. Хотя вполне логично было бы.
4.2. А вот ".*" перед группой действительно не нужно, просто остался как атавизм с прошлой версии регулярки, убрал.
Единственное, что осталось раздражать, это при сносе строки идет замена на два пробела, причем это видно, если вытянуть поле в пользовательские колонки TC (при использовании WDXGuide двойные пробелы отсутствуют), то есть:
Code:
Субъект РФ, г. Такой-то, ул. Такая-то, 500 м севернее дома  №5, объект АО __"Фирма"__

(Слово "Фирма" было на второй строке в PDF. Двойные пробелы заменил подчеркиванием для видимости.)
Пока такой код:
Code:
\QАдрес площадки:\E\s*((.*\R)+)\QКоординаты:\E

Убрать бы ненужные пробелы, образующиеся при сносе строки и в конце (также при сносе).

#38:  Author: Skif_off PostPosted: Sun Feb 14, 2021 09:37
    —
3. В таком виде получается, что выражение должно вернуть группу из одной и более групп "(.*\R)". Оно срабатывает тут, конечно, но громоздко и больше ресурсов.
4.1. Спасибо, запомню (в таких конструкциях, когда точно известно начало и конец и внутри могут быть \r и \n обычно использую ".*?").
Пока писал, внезапно вспомнил про модификаторы, тогда как-то так можно
Code:
(?s)\QАдрес площадки:\E\s*(.*+)\QКоординаты:\E

(если от конечных пробельных символов не избавляться).

Можно попробовать предложить автору подобную фичу, опционально, например, просто указать какой-то символ, а плагин сам прогонит замену Х+ на Х (хотя тут с метасимволами будут проблемы, если только их запретить).

#39:  Author: Monarch-LFV PostPosted: Sun Feb 14, 2021 15:00
    —
Skif_off
Почему-то ваша регулярка не работает в плагине. Скорее всего, из за того, что (?s) включает режим соотетствия точке и новое строке, то есть \n. А данный код почему-то не работает у меня с \n, только с \R.

#40:  Author: Skif_off PostPosted: Sun Feb 14, 2021 17:45
    —
Погонял немного плагин, действительно "(?s)" в начале почему-то ломает работу, но если добавить как "(?s).*", то срабатывает. Но потом вспомнил, что модификаторы вроде как можно применять/менять на ходу и добавил вот так:
Code:
\QАдрес площадки:\E\s*\K(?s)(.+?)\s*\QКоординаты:\E

И заработало Smile

P.S. Там ещё \K добавил, люблю эту штуку в PCRE, по идее должно ускорять работу, т.к. отбрасывает (не держит в памяти) все предыдущие совпадения - они ведь всё равно уже найдены.

#41:  Author: Monarch-LFV PostPosted: Sun Feb 14, 2021 18:16
    —
Skif_off
Да, супер, работает, как часы! Спасибо! последние 2 пробела в конце ушли, уже лучше, и заметно быстрее стал.
Остались пробелы на переводе строк, но это уже мелочи, которые видимо регуляркой не победить, так как в WDXGuide без них отображает, а в колонке TC с ними, и не поймешь чей косяк.

#42:  Author: Monarch-LFV PostPosted: Mon Mar 07, 2022 13:36
    —
Есть бинарные файлы *.dwg, из которых в принципе можно считать данные о пользователе. Но, данные файлы в кодировке UTF-16 LE (1200).
То есть, если открыть текстовым редактором например в кодировке UTF-8, то будет так:

Причем, пробелы там, это по сути не пробелы "\020", а символы NUL - "\000".
Вопрос, как дать понять плагину, что файл в UTF-16? Чтобы понимал двухбайтовые символы в таком виде:

По идее, должно быть что-то наподобие такого:
Code:
regex10=\<string\>(.*?)\<\/string\>


Пока выхожу из положения так:
Code:
regex10=\<.s.t.r.i.n.g.\>.(.).(.).(.).(.).(.).(.).(.).(.).(.).(.).(.).(.).(.).(.).(.).(.).(.).(.).(.).(.)
regex10replace=$1$2$3$4$5$6$7$8$9$10$11$12$13$14$15$16$17$18$19$20

Но не очень красиво получается, просто выборка 20 символов.

#43:  Author: Skif_off PostPosted: Mon Mar 07, 2022 15:55
    —
В документации плагина есть пункт "Unicode Input for Expressions", не смотрели?

В крайнем случае есть ещё WinScript Advanced, а в том же VBScript - способы указать кодировку (см. объект FileSystemObject) + InStr.

#44:  Author: Monarch-LFV PostPosted: Tue Mar 08, 2022 05:15
    —
Skif_off
Справку по "Unicode Input for Expressions" смотрел, но как не пробовал, как не крутил, все равно ничего не получается почему-то. Причем если просто текстовый файл создать в кодировке 1200, то его получается считать, а вот если бинарный dwg, то нет. Видимо, не только с кодировкой проблемы, а связано с другими символами, которые определяют файл бинарным.
Сделал тестовый файл: https://cloud.mail.ru/public/6xC8/ckPfmp9HD
Так вот, если во второй строке удалить пробельный символ (это не пробел) между "> <", то плагин работает, а так - нет.
Code:
regex10=(*UTF)\x{03C}\x{073}\x{074}\x{072}\x{069}\x{06E}\x{067}\x{03E}(.*?)\x{03C}
regex10replace=$1

Также не совсем понял по поводу рекомендованной в справке (*UTF). Что с ней, что без нее - результат одинаковый.
По поводу WinScript Advanced - скорее всего будет тот же результат, но вначале нужно еще будет VBScript изучить.

#45:  Author: Skif_off PostPosted: Tue Mar 08, 2022 20:42
    —
Monarch-LFV
UTF-16 LE, но без BOM - поэтому и спотыкается, наверное.
Попробуйте в hex-редакторе дописать в начало FFFE (т.е. два байта), если плаг заработает, то дело в отсутствии BOM (просто по этой метке обычно детектят UTF-16/32). Ну или в исходниках посмотрите, как плаг открывает файлы.
Если так, то, возможно, проще написать автору. Только, если что, просите флаг какой-нибудь принудительный, типа "(*UTF16)" Smile, не надо нагромождать постоянную проверку кодировки.
Monarch-LFV wrote:
По поводу WinScript Advanced - скорее всего будет тот же результат

Не факт, попадались скрипты для правки бинарников.

Отрежте кусок в hex-редакторе со всеми нужными текстовыми данными (какой у них объём обычно или максимум по спецификации, если есть?) и покажите, что оттуда надо вытащить.

P.S. Может, Гислера уболтать поддержку Lua запилить? Smile Пока логинился, смотрел файл, писал ответ, перечитывал на предмет ошибок - для DC уже бы, наверное, дописывал плаг Smile)

#46:  Author: Monarch-LFV PostPosted: Wed Mar 09, 2022 04:37
    —
Skif_off
Да, вы правы, вставил 2 байта в hex-редакторе и заработало. Попробую связаться с автором плагина.

#47:  Author: Skif_off PostPosted: Wed Mar 09, 2022 06:11
    —
Monarch-LFV
Возможно, есть смысл со скрипта начать? Типа
Code:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream = FSO.OpenTextFile(filename, 1, False, -1)
Str = TextStream.Read(256)
TextStream.Close

N1 = InStr(Str, "<string>")
If IsNumeric(N1) = False Then WScript.Quit
N2 = InStr(N1, Str, "</string>")
content = Mid(Str, N1 + 8, N2 - (N1 + 7))


Добавлено спустя 19 минут:

Чутка оптимизировал, чтобы поиск закрывающего тега шёл не с самого начала.

#48:  Author: Monarch-LFV PostPosted: Wed Mar 09, 2022 06:57
    —
Skif_off
За скрипт для WinScriptsAdv большое спасибо, немного адаптировал: отключил ошибку (на всякий случай, версии файлов DWG бывают разные, воможно принцип отличается), чтение большего массива из файла (16кБ, где-то в этих пределах в файле лежат нужные данные) и убрал последний символ "<"
Code:
on error resume next
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream = FSO.OpenTextFile(filename, 1, False, -1)
Str = TextStream.Read(16000)
TextStream.Close

N1 = InStr(Str, "<string>")
If IsNumeric(N1) = False Then WScript.Quit
N2 = InStr(N1, Str, "</string>")
content = Mid(Str, N1 + 8, N2 - (N1 + 8))

Работает как часы.

Еще, по поводу плагина в теме (PCREsearch): есть в ini еще настройка:
Code:
; allow binary zeros (two joined zero bytes) for detecting UTF-16 files (does not affect UTF-8 detection)
UnicodeZerosValid=false

Поменял на true, тестовый файл стал правильно читаться, но вот dwg также не считываются... подвох все же есть с нулями где-то. Но, думаю, уже и не надо, скрипт выше работает - и это главное.

#49:  Author: Skif_off PostPosted: Wed Mar 09, 2022 16:19
    —
Monarch-LFV wrote:
и убрал последний символ "<"

Прошу прощения, обсчитался (не проверял, с телефона) Smile, насчёт 16000-16кб: метод Read читает по символам, не по байтам, по идее - для двухбайтной UTF-16 тут должно быть достаточно 8000.

За UnicodeZerosValid не подскажу, но выглядит так, будто связан с чтением бинарных файлов, только там 00 (или 0000 для двухбайтной) может быть не в конце строки.



Total Commander -> Плагины Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Page 1 of 1

Powered by phpBB © 2001, 2005 phpBB Group