Дополнение №15


Параметр formt<>, ?F (см. в Дополнение №24)



Описание параметра.

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

Конструкция параметра:

1. Встроенные шаблоны (номера из таблицы):

formt<1(,2,3,..., N)>

2. Пользовательские шаблоны:

formt<u1,...,uN>

3. Регулярные выражения:

formt<0!!RegExp!!Replace>

4. Объединение вариантов в одной строке:

formt<1(,2,3,..., N),u1,...,uN!!RegExp!!Replace>

5. Использование цифровых диапазонов: (добавлено в версии 13.3)
Если необходимо прописать несколько подобных имён шаблонов, имеющих конечную и последовательную нумерацию, то для экономии места можно использовать диапазон, используя двойной дефис --

formt<1,2,3,4,5,u1,u2,u3,u4,u5,u6,u7,u8,h2,h8,e2,e3,e4,e5,e6,e7>

formt<1--5,u1--u8,h2,h8,e2--e7>




Специальные теги в строке, позволяющие производить дополнительные действия:

1. :A:

formt<1:A:,u1:A:,u2,...>

Тег :A: прописывается после или до номера/ключа.
Означает условие: если после заданной обработки (номера или ключа) возвращается пустой результат, то это преобразование игнорируется, возвращается предыдущая строка для обработки с помощью последующих номеров или ключей.

По умолчанию если какое-либо условие возвращает пустой результат, то обработка последующих номеров или ключей завершается и возвращается путая строка.

2. :B:

formt<6,1,3...,N:B:,key1,key2,...,keyN:B:key1,key2,...,keyN>

Тег :B: прописывается между номерами и ключами.
Означает условие: если преобразование параметров (между :B:) возвращает не пустой результат, то остальные параметры не вычисляются.
Если преобразование возвращает пустой результат, то возвращается начальный текст для других параметров.
Между тегом :B: могут использоваться теги :A:, :C:, :D:, :E:

3. :C:

formt<6,1,3...,N:C:,key1,key2,...,keyN:C:key1,key2,...,keyN:C:Delimeter^^Line>

Тег :C: прописывается между номерами и ключами.
Каждому параметру передаётся начальная строка (текст) для преобразования, полученные результаты последовательно объединяются через разделитель Delimeter, который прописывается после последнего тега :C:.
В разделителе можно использовать теги "@CRLF", "@CR", "@LF", "@TAB" означающие переносы строки и табуляцию.
По умолчанию начальная строка передаётся первому параметру, результат преобразования передаётся второму параметру и т.д.
Между тегом :C: могут использоваться теги :A:, :D:, :E:

В версии 33.1 добавлен разделитель ++ , который позволяет использовать цифровой диапазон ключей для экономии места.
Строка key1++key8 будет преобразована в key1,key2,key3,key4,key5,key6,key7,key8
Каждое имя ключа будет передана через тег :С:, а результаты последовательно будут объединены через разделитель Delimeter

formt<key1++key8:C:Delimeter>

В версии 34.5 добавлен разделитель ^^ , который позволяет при пустом результате возвращать заданную строку Line.
Парамер Line необязательный.

formt<key1,key8:C:Delimeter^^Line>



4. :D:
Тег :D: аналог тега :B:
Между тегом :D: могут использоваться теги :A:, :E:

5. :E:
Тег :E: аналог тега :С:
Между тегом :E: могут использоваться теги :A:

6. :Gstring:
В версии 33.4 добавлен тег :Gstring: позволяющий возвращать заданную строку/символ string при пустом (не найденном) результате.



Если в регулярных выражениях, которые используются в командной строке, необходимы символы "<" и ">", то используйте "{{" и "}}" соответственно
Так же есть возможность вставлять в шаблоны необходимые символы с помощью функций Autoit :
Chr() и ChrW() заменяются соответствующими символами.
ClipGet() заменяется содержимым буфера обмена.
Number() позволяет производить математические действия.
StringLeft() позволяет получать указанное число символов строки слева.
StringRight() позволяет получать указанное число символов строки справа.
StringMid() позволяет получать часть символов строки.
StringLen() позволяет получать количество символов строки.

Так же в поиске и замене могут использоваться:
⇨ диалоги [input], [combo] и другие, см. Дополнение №18
⇨ GLOBALSENDS<xN> - данные глобальной переменной, см. Дополнение №23
⇨ $GLOBALSENDS[N] - данные глобальной переменной, см. Дополнение №23
⇨ $var_... - данные глобальной переменной, созданной командой exect
⇨ <info=...> - данные переданные параметром, см. Дополнение №10

Если нужны имена вышеуказанных функций без получения данных, то экранируйте их с помощью символа "\".

xxx=<\input>||111
xxx=\h+||C\hr(32
xxx=\h+||$\GLOBALSENDS[N]





ПараметрОписание
Numbers Форматирует текст встроенными шаблонами.
  1,2,3,..., N - номера преобразований (см. таблицу значений форматирования текста)
    Может быть несколько в любом порядке перечисленных через запятую.

Пример записи:

stext=%WL||x||formt<6,1>||clip<> ;; извлечь все ссылки из выделенных файлов, удалить дубликаты и записать в буфер обмена

n!!RegExp
-n!!RegExp
+n!!RegExp
Производит в тексте поиск совпадений регулярного выражения.
  n - номер преобразований из таблицы (по умолчанию 0)
    по умолчанию возвращаются все найденные совпадения через разделитель переноса строки.
    при -n возвращается 1 (совпадение найдено) или 0 (не найдено).
    при +n поиск до первого совпадения, возвращается первое найденное совпадение.
  RegExp - строка регулярных выражений для поиска.

Пример записи:

sends=-1!!-1||formt<0!!([^/]+)> GLOBALSENDS<a> ;; разбить путь ссылки в буфере обмена по обратным слешам и вывести результат

n!!RegExp!!Replace!!Flag Производит в тексте поиск и замену, используя регулярное выражение.
  n - номер преобразований из таблицы (по умолчанию 0)
  RegExp - строка регулярных выражений для поиска.
  Replace - текст замены регулярного выражения.
  Flag [необязательный] - количество замен в строке.
    по умолчанию 0 - выполняет замену всех найденных образцов.
 Возвращает строку преобразованную регулярным выражением.
#NumberLine:F: Сортирует файлы с помощью информации параметра info Дополнения №10.
  # - обязательный символ, означающий сортировку.
  Number - режим:
    0 - сортировать по возрастанию.
    1 - сортировать по убыванию.
    2 - сортировать по числовому возрастанию.
    3 - сортировать по числовому убыванию.
      (важно, при 2 и 3 выражение должно извлекать число)
    4 - удалять дубликаты.
    5 - удалять дубликаты (без учёта регистра).
  Line - строка параметров из Дополнения №10.
  :F: - тег, вместо которого будет вставлен объект из списка при сортировке.

  Есть возможность сортировать по нескольким данным из параметра info
    #NumberLine:F:&&Line:F:&& ... &&Line:F:
    Разделитель между параметрами &&

Пример записи:

global alist=%WL||formt<#2i1:F:> GLOBALALIST<a> ;; сортировать выделенные изображения по ширине по возрастанию
global alist=%WL||formt<#3i1:F:> GLOBALALIST<a> ;; сортировать выделенные изображения по ширине по убыванию

global alist=%WL||formt<#0o30:F:> GLOBALALIST<a> ;; сортировать выделенные файлы по дате создания по возрастанию
global alist=%WL||formt<#1o30:F:> GLOBALALIST<a> ;; сортировать выделенные файлы по дате создания по убыванию

global alist=%WL||formt<#0f11:F:&&f12:F:> GLOBALALIST<a> ;; сортировать выделенные файлы по типу и имени по возрастанию
global alist=%WL||formt<#1f11:F:&&f12:F:> GLOBALALIST<a> ;; сортировать выделенные файлы по типу и имени по убыванию

global alist=%WL||formt<#2f25:F:> GLOBALALIST<a> ;; сортировать выделенные файлы по размеру по возрастанию
global alist=%WL||formt<#3f25:F:> GLOBALALIST<a> ;; сортировать выделенные файлы по размеру по убыванию

Ключи из секции [FormatUser] в TCIMG.ini
keys key1,key2,key3,...,keyN - имена ключей в секции [FormatUser] в TCIMG.ini, в которых прописываются пользовательские шаблоны регулярных выражений для дополнительного форматирования.
  Может быть несколько перечисленных в любом порядке через запятую.
  Имена пользовательских шаблонов могут содержать латинские символы, цифры.

Синтаксис:
  1. key=RegExp
    RegExp - строка регулярных выражений для поиска.
    Возвращаются все найденные совпадения через разделитель переноса строки.

Пример записи:

[FormatUser]
; найти все цифры
key1=(\d+)
; найти русские слова (более 2-х символов)
words1=(?i)([а-яё-]{3,})


  2. key=RegExp||Replace
    RegExp - строка регулярных выражений для поиска.
    Replace - текст замены регулярного выражения.
    Возвращает строку преобразованную регулярным выражением.

Пример записи:

[FormatUser]
; оставляет левую часть строк 4-е символа и правую часть строк 4-е символа
U3=(?m)^(.{4}).*(.{4})$||$1$2
; удалить повторы слов, которые стоят рядом
U4=(?<![^\s\A])([А-яЁё]+)[\h]+\1||\1

fun_keys Имена шаблонов с приставкой fun_ позволяют производить замену на "функцию"
Синтаксис:
  fun_key=RegExp||Replace||Count||Flag||StringNumber
    RegExp - строка регулярных выражений для поиска.
    Replace - текст замены регулярного выражения, в замене могут быть задействованы:
      - встроенные и вспомогательные функции Autoit
        (строки необходимо обрамлять одинарными кавычками и использовать символ присоединения строк &)
      - математические операторы при действиях с числами "+-*/^"
      - тернарные условия: (логическое выражение)?выражение1:выражение2
      - глобальные переменные $var_... , созданные в команде exect
      - глобальные переменные GLOBALNAME..., созданные другими командами см. Дополнение №23
      - теги:
        :NUMFORMAT: заменяется числом текущего найденного совпадения с шаблоном (отсчёт с 0)
        (можно использовать математические действия для получения других чисел (к примеру, :NUMFORMAT:+1))
        :MAXFORMAT: заменяется числом (количеством всех найденных совпадений с шаблоном)
        :QUOTES1: или :QUOTES2: добавляется в начале замены Replace
          :QUOTES1: - в найденных фрагментах игнорируются одинарные кавычки.
          :QUOTES2: - в найденных фрагментах игнорируются двойные кавычки.
        [:delete:] означает удаление совпадений (удаление найденных фраз).
    Count [необязательный]:
      1 - поочерёдная замена каждого найденного образца (по умолчанию)
      0 - одновременная замена всех найденных образцов
        (в некоторых случаях Count может использоваться как число замен)
    Flag [необязательный]:
      1 - обрабатывать параметры в тексте (по умолчанию)
        (параметры GLOBALNAME, [info], [input], ... и др. заменяются их значениями)
      0 - не обрабатывать
    StringNumber [необязательный]:
      Строка состоящая из номера или номеров найденных совпадений, которые необходимо заменить.
      Номера прописываются через запятую. Пример: 1,5,8
      При отрицательных числах отсчёт ведётся с конца. Пример: 3,-1,-2
      Поддерживается диапазон(ы) номеров. Пример: 2:5 Пример: 1,3:6,8:11,13:-1
      Первый символ "#" означает "кроме" заданных номеров. Пример: #1,5,8

      Первый символ "@" означает чередование в диапазоне найденных совпадений: @Start|End|Step|InArow, где:
        Start - минимальное значение диапазона.
        End - максимальное значение диапазона (при -1 все совпадения).
        Step - шаг чередования (по умолчанию 1).
        InArow - количество подряд номеров (по умолчанию 1).

Пример записи:

[FormatUser]
; fun_numplus - увеличение всех цифр на единицу
fun_numplus=(\d+)||Number($1)+1

; fun_uplo - левую часть от " - " перевести в верхний регистр, правую в нижний
fun_uplo=([^-]+)( - )(.+)||StringUpper('$1')
&'$2'&StringLower('$3')

; fun_numdel1- удалить 2-ю цифру
fun_numdel1=(\d+)||[:delete:]||1||0||2

; fun_numdel6 - удалить все цифры, кроме 1-й и 3-й
fun_numdel6=(\d+)||[:delete:]||1||0||#1,3

; fun_numcount1 - увеличение всех цифр на единицу, кроме первой
fun_numcount1=(\d+)||Number($1)+1||1||0||#1

; fun_numdel7 - удалить все цифры через одну, начиная с 1-й
fun_numdel7=(\d+)||[:delete:]||1||0||@1|-1|2

fnc_keys Имена шаблонов с приставкой fnc_ позволяют производить замену на "функцию".
Синтаксис:
  fnc_key=RegExp||Replace||Count||Flag
    RegExp - строка регулярных выражений для поиска.
    Replace - текст замены регулярного выражения, в замене могут быть задействованы:
      - $1, $2, ... $9 - группы замены; для отделения групп от цифр используются ${1}, ${2}, ... ${3}
      - встроенные и вспомогательные функции Autoit
        (строки необходимо обрамлять одинарными кавычками и использовать символ присоединения строк &)
      - математические операторы при действиях с числами "+-*/^"
      - тернарные условия: (логическое выражение)?выражение1:выражение2
      - глобальные переменные $var_... , созданные в команде exect
      - глобальные переменные GLOBALNAME..., созданные другими командами см. Дополнение №23
      - теги:
        :NUMFORMAT: заменяется числом текущего найденного совпадения с шаблоном (отсчёт с 0).
        :NUMFORMAT1: заменяется числом текущего найденного совпадения с шаблоном (отсчёт с 1).
          (можно использовать математические действия для получения других чисел (к примеру, :NUMFORMAT:+1)).
        :MAXFORMAT: заменяется числом (количеством всех найденных совпадений с шаблоном).
        :NUMBER: и :LISTNUM: заменяется числом очерёдности в командах slist и других.
        :NUMCYCLE: заменяется числом - номером строки при построчной обработке текста, при Flag=1 (отсчёт с 1).
        [:delete:] означает удаление совпадений (удаление найденных фраз, относительно параметра Count).
        rnm<> заменяется случайными данными, параметры такие же как в Дополнении №30, кроме ?Count
        tnm<> заменяется числовым счётчиком, параметры такие же как в n9 см. Дополнение №10.
        enm<> заменяется буквенным счётчиком, параметры такие же как в n92 см. Дополнение №10.
        rom<> заменяется римским счётчиком, параметры такие же как в n94 см. Дополнение №10.
        arm<> заменяется армянским счётчиком, параметры такие же как в n96 см. Дополнение №10.
        grg<> заменяется грузинским счётчиком, параметры такие же как в n98 см. Дополнение №10.
          rnm<>, tnm<>, enm<>, rom<> могут использоваться несколько раз в любой последовательности.
    Count [необязательный] возможны варианты:
        N - количество замен. По умолчанию 0 - выполняет замену всех найденных образцов.
        &StringNumber - преобразования заданных номеров найденных образцов.
        #StringNumber - преобразования кроме заданных номеров найденных образцов.
          StringNumber - строка состоящая из номера, номеров или диапазонов чисел.
          Номера прописываются через запятую. Пример: 1,5,8
          При отрицательных числах отсчёт ведётся с конца. Пример: 3,-1,-2
          Поддерживается диапазон(ы) номеров. Пример: 2:5 Пример: 1,3:6,8:11,13:-1
        @Start|End|Step|InArow, преобразования чередующих номеров найденных образцов, где:
          Start - минимальное значение диапазона.
          End - максимальное значение диапазона (при -1 все совпадения).
          Step - шаг чередования (по умолчанию 1).
          InArow - количество подряд номеров (по умолчанию 1).
    Flag [необязательный] режим обработки:
        0 - обрабатывается весь текст (по умолчанию).
        1 - построчная обработка (т.е. регулярное выражение применяется к каждой строке отдельно).

Пример записи:

[FormatUser]
; увеличение всех цифр на единицу
fnc_xxx=(\d+)||Number($1)+1

; увеличение 1-й цифры на единицу
fnc_xxx=(\d+)||Number($1)+1||1

; увеличение первых 6-ти цифр на единицу
fnc_xxx=(\d+)||Number($1)+1||6

; увеличение 1-й и последней цифры на единицу
fnc_xxx=(\d+)||Number($1)+1||&1,-1

; увеличение с 5-й по 8-ю цифр на единицу
fnc_xxx=(\d+)||Number($1)+1||&5:8

; увеличение цифр на единицу, кроме 1-й и последней
fnc_xxx=(\d+)||Number($1)+1||#1,-1

; увеличение цифр на единицу, кроме с 5-й по 8-ю
fnc_xxx=(\d+)||Number($1)+1||#5:8

; увеличение всех цифр на единицу через одну, начиная с 1-й
fnc_xxx=(\d+)||Number($1)+1||@1|-1|2

; удаление первых 6-ти цифр
fnc_xxx=(\d+)||[:delete:]||6

; удаление 1-й и последней цифры
fnc_xxx=(\d+)||[:delete:]||&1,-1

; удаление цифр, кроме 1-й и последней
fnc_xxx=(\d+)||[:delete:]||#1,-1

; удаление всех цифр через одну, начиная с 1-й
fnc_xxx=(\d+)||[:delete:]||@1|-1|2

; замена всех цифр на счётчик
fnc_xxx=(\d+)||tnm<1|#|1|1|. ,>

; замена всех цифр на буквенный счётчик
fnc_xxx=(\d+)||enm<0|1|A|#|1|1>

; замена всех цифр на римский счётчик
fnc_xxx=(\d+)||rom<1|3999>

; замена всех цифр на армянский счётчик
fnc_xxx=(\d+)||arm<1|9999>

; замена всех цифр на грузинский счётчик
fnc_xxx=(\d+)||grg<1|19999>

; замена всех цифр на случайные данные
fnc_xxx=(\d+)||rnm<1|10>

; пронумеровать строки текста, добавляя в начало счётчик
fnc_line1=(?m)(\A|\r\n|\r|\n)||'$1'&'tnm<1|#|1|1|. ,>'


Примечания:
По сравнению с ключами fun_key, ключи fnс_key гораздо быстрее обрабатывают большой текст.
sort_keys Имена шаблонов с приставкой sort_ позволяют сортировать текст с помощью регулярного выражения.
Синтаксис:
  sort_key=RegExp||Replace||Mode||Start||End||Func
    RegExp - строка регулярных выражений для поиска.
    Replace - текст замены регулярного выражения.
    Mode
      0 - сортировать по возрастанию.
      1 - сортировать по убыванию.
      2 - сортировать по числовому возрастанию.
      3 - сортировать по числовому убыванию.
        (важно, при 2 и 3 регулярное выражение должно извлекать число).
      4 - удалять дубликаты.
      5 - удалять дубликаты (без учёта регистра).
    Start [необязательный]
      индекс массива, от которого начинать сортировку (отсчёт с 0, по умолчанию 0).
    End [необязательный]
      индекс массива, в котором закончить сортировку (0 - до конца массива, по умолчанию 0).
    Func [необязательный]
      1 - вычислить с помощью функций Autoit (в замене Replace могут использоваться функции Autoit)
      0 - простая замена (по умолчанию).

Принцип работы:
  1. Текст разбивается построчно.
  2. В каждой строке ищется фраза, заданная регулярным выражением (поиск и замена).
  3. По найденным фразам сортируются строки текста.

Пример записи:

[FormatUser]
; сортировать по возрастанию по словам, исключая начальные символы неслова
sort_s1=(?i)([^a-zа-яё]*)([a-zа-яё]+)||$2||0

; сортировать по убыванию, исключая начальные символы неслова
sort_s2=(?i)([^a-zа-яё]*)([a-zа-яё]+)||$2||1

; сортировать по убыванию по длине строки
sort_len1=(?m)([^\r\n]+)||StringLen('$1')||0||0||0||1

; сортировка по числовому возрастанию ссылок вида https://234pi.com/d95e9734da.320.mp4
sort_num1=(?s).*[^\d](\d+)\.mp4||$1||2

; сортировка по числовому убыванию ссылок вида https://3453api.com/d95e9734da.320.mp4
sort_num2=(?s).*[^\d](\d+)\.mp4||$1||3

; удаление дубликатов по заданному регулярному выражению
sort_dd1=(?s)(.*[^\d])\d+\.mp4||$1||4


lot_keys Имена шаблонов с приставкой lot_ позволяют производить многократный поиск и замену.
Синтаксис:
  lot_key=RegExp||Replace
    RegExp - строка регулярных выражений для поиска.
    Replace - текст замены регулярного выражения.
Поиск и замена будут производиться пока замены не закончатся.

Пример записи:

[FormatUser]
; lot_del1 - удалить парные буквенные теги
lot_del1=(?si)<[a-z]>¤<[a-z]>||$1¤

rgx_keys Имена шаблонов с приставкой rgx_ позволяют производить поиск и назначать разделитель между найденными совпадениями.
Синтаксис:
  rgx_key=RegExp||Flag||Number||Delimeter
    RegExp - строка регулярных выражений для поиска.
    Flag - [необязательный] режим поиска:
      0 - возвращается 1, если совпадение найдено или 0, если не найдено.
      1 - поиск до первого совпадения, возвращается полное совпадение с шаблоном.
      3 - возвращаются все совпадения, разделённые разделителем Delimeter (по умолчанию).
    Number - [необязательный] позиция строки, начиная с которой будут искаться совпадения (по умолчанию 1)
    Delimeter - [необязательный] разделитель при объединении:
      символ или строка между найденными совпадениями (по умолчанию перенос строки)
В отличие от обычного поиска с регулярными выражениями, можно выбирать разделитель при объединении найденных совпадений (по умолчанию перенос строки @CRLF)
Может использоваться, когда регулярное выражение связано с получением нескольких строк.

Пример записи:

[FormatUser]
; rgx_line5 - разделить текст по 5 строк
rgx_line5=((?:[^\r\n]+(?:\r\n|$)*?){5})||3||1||#:#

cmd_keys Имена шаблонов с приставкой cmd_ позволяют производить преобразование с помощью сторонних консольных программ и утилит, а так же команд cmd.
Синтаксис:
  cmd_key=String
    String - возможны варианты:
      • строка команд и параметров.
      • путь к программе и её строка команд и параметров.
Тег ?NameKey? позволяет вставить программу, прописанную в TCIMG.ini в секции [Programs], где NameKey - имя ключа
Принцип действий:
  1. Запускается заданная командная строка.
  2. Передаётся в консоль текст на форматирование.
  3. Считывается из консоли обработанный текст.

Пример записи:

[FormatUser]
; cmd_sort2 - сортировка в обратном порядке с помощью команды cmd sort
cmd_sort2=sort /r

; cmd_uniq1 - удаление дубликатов с помощью программы uniq
cmd_uniq1="%PROGRAMFILES(X86)%\GnuWin32\bin\uniq.exe"

; cmd_fmt1 - преобразование текста - 50 символов строке, остальное переносится на следующую строку
cmd_fmt1="%PROGRAMFILES(X86)%\GnuWin32\bin\fmt.exe" -w 50

; Можно использовать только имя утилиты, если прописать в autorun.cfg путь к программе
SetEnv /A /EV PATH ;%PROGRAMFILES(X86)%\GnuWin32\bin
; см. Дополнение №4, Основные вопросы
; После этого можно прописывать:

cmd_uniq1=uniq

; cmd_jq_c - сжимает текст json в одну строку (Compact-print JSON)
cmd_jq_c="%COMMANDER_PATH%\Utilities\Images\json\jq-win32.exe" -c .
Если путь программы прописать в TCIMG.ini (TCIMGU.ini) в секции [Programs]
[Programs]
JQ=%COMMANDER_PATH%\Utilities\Images\json\jq-win32.exe
то можно использовать имя ключа JQ

cmd_jq_c="?JQ?" -c .

ndb_keys Имена шаблонов с приставкой ndb_ позволяют нумеровать дублирующие фразы, заданные регулярным выражением.
Для каждой группы дубликатов отдельный счётчик.
Синтаксис:
  ndb_key=RegExp||Replace||Mode||Start||Register
    RegExp - строка регулярных выражений для поиска.
    Replace - строка замены регулярного выражения.
      • чтобы вставить текст группы используются $1,$2,..., $9
      • группа для которой нужно произвести нумерацию заключается в угловые скобки и внутри в любом месте прописывается тег :NDB:, который будет заменён нумерацией, пример: <$2 :NDB:>
      • внутри <...> могут использоваться любые символы/разделители, кроме угловых скобок.
    Mode - [необязательный] режим нумерации:
      0 - первые найденные не нумеруются (по умолчанию).
      1 - нумеруются все, начиная с первого.
      2 - нумеруются только дубликаты, начиная с первого.
    Start - [необязательный] число с которого начинается нумерация (по умолчанию 1)
    Register - [необязательный] флаг установки чувствительности к регистру написания.
      0 - учитывать регистр (по умолчанию).
      1 - не учитывать регистр.

Пример записи:

[FormatUser]
; ndb_name1 - пронумеровать дубликаты имён списка путей фалов, для каждой группы дубликатов отдельный счётчик
ndb_name1=(?m)^(.+\\)([^\\]+)(\.[^.]+)$||$1<$2:NDB:>$3

; ndb_line1 - пронумеровать все строки, для каждой группы дубликатов отдельный счётчик
ndb_line1=(?m)^(.+)$||<:NDB: $1>||1

; ndb_line2 - пронумеровать строки, которые имеют дубликаты, для каждой группы дубликатов отдельный счётчик
ndb_line2=(?m)^(.+)$||<:NDB: $1>||2

ndb_word1 - пронумеровать все слова в предложении, для каждой группы дубликатов отдельный счётчик
; строка "soft boy soft boy soft boy soft boy" ==> "soft_1 boy_1 soft_2 boy_2 soft_3 boy_3 soft_4 boy_4"
ndb_word1=(*UCP)(\A|\W*)(\w+)(\W*|\z)||$1<$2_:NDB:>$3||1

rps_keys Имена шаблонов с приставкой rps_ позволяют производить поиск и замену.

Синтаксис:
  rps_key=Search||Replace||Count||Register
    Search - строка поиска.
    Replace - строка замены.
    Count - [необязательный] количество выполняемых замен:
      0 - выполнить замену всех найденных строк (по умолчанию).
      используйте отрицательное число, чтобы выполнить замену справа.
    Register - [необязательный] флаг установки чувствительности к регистру написания.
      0 - не учитывать регистр, используется локальный язык (по умолчанию).
      1 - учитывать регистр.
      2 - не учитывать регистр, используется основное/быстрое сравнение.

Пример записи:

[FormatUser]
; ndb_name1 - произвести замену всех найденных "1111" на "2222"
ndb_name1=1111||2222

; ndb_name2 - произвести в начале одну замену "1111" на "2222"
ndb_name2=1111||2222||1

; ndb_name3 - произвести в конце одну замену "1111" на "2222"
ndb_name3=1111||2222||-1

; ndb_name4 - произвести замену всех найденных "AAAA" на "BBBB", учитывая регистр символов
ndb_name4=AAAA||BBBB||0||1






Таблица значений форматирования текста:


ЗначениеОписание
00 или пустое значение не обрабатывается - переходит к следующему
1удаление дубликатов строк
27удаление дубликатов строк (без учёта регистра)
31удаление дубликатов строк, дубликаты заменяются пустой строкой
32удаление дубликатов строк (без учёта регистра), дубликаты заменяются пустой строкой
9удаление дублирующихся строк (остаются строки, которые не повторялись)
28удаление дублирующихся строк (остаются строки, которые не повторялись) (без учёта регистра)
2удаление уникальных значений строк
(остаются строки только повторяющиеся в одном экземпляре)
29удаление уникальных значений строк
(остаются строки только повторяющиеся в одном экземпляре) (без учёта регистра)
39удаление уникальных значений строк с сохранением последовательности встречающихся повторов
(остаются строки только повторяющиеся в одном экземпляре)
40удаление уникальных значений строк с сохранением последовательности встречающихся повторов
(остаются строки только повторяющиеся в одном экземпляре) (без учёта регистра)
26удаление уникальных значений строк (остаются все повторяющиеся строки)
30удаление уникальных значений строк (остаются все повторяющиеся строки) (без учёта регистра)
33возвращает текст, не содержащий повторов строк (из повторяющихся строк остаются только первые)
34возвращает текст, не содержащий повторов строк (из повторяющихся строк остаются только первые) (без учёта регистра)
35удаление повторяющихся подряд строк (из повторяющихся строк остаются только первые)
36удаление повторяющихся подряд строк (из повторяющихся строк остаются только первые) (без учёта регистра)
5реверс строк текста
  Получение различных объектов.
6получение всех ссылок
7получение всех е-mail адресов
8получение всех IP адресов
18получение строк, в начале которых есть числа
19получение строк, в начале которых нет чисел
100получение всех возможных путей (C:\xxx.... , %WINDIR%\xxx...)
  Сортировка строк.
3сортировка по возрастанию
4сортировка по убыванию
20сортировка по числовому возрастанию
(актуальна если в начале строк есть цифры, или вся строка является числом)
(сортируются числа, включая отрицательные и с плавающей точкой)
21сортировка по числовому убыванию
(актуальна если в начале строк есть цифры, или вся строка является числом)
(сортируются числа, включая отрицательные и с плавающей точкой)
22сортировка по длине строки по возрастанию
23сортировка по длине строки по убыванию
  Сортировка имен объектов пути.
24сортировка по числовому возрастанию начальных цифр имени объекта пути
25сортировка по числовому возрастанию конечных цифр имени объекта пути
37сортировка по числовому убыванию начальных цифр имени объекта пути
38сортировка по числовому убыванию конечных цифр имени объекта пути
41сортировка по числовому возрастанию всех цифр имени объекта пути
42сортировка по числовому убыванию всех цифр имени объекта пути
  Поочерёдная числовая и буквенная сортировка строк, в начале которых есть/нет чисел.
100
9
a
z
119
0
z
a
120
9
z
a
139
0
a
z
14a
z
0
9
15z
a
9
0
16a
z
9
0
17z
a
0
9
  Удаление различных символов.
51удаление лишних пустых строк
52удаление конечных пробелов, табуляции в строках (Chr(9), Chr(32), Chr(160))
53удаление начальных пробелов, табуляции в строках ...
54удаление начальных и конечных пробелов, табуляции в строках ...
55удаление всех пробелов, табуляции в строках ...
56удаление более одного пробела, табуляции в строках ...
57удалить переводы строк
58заменить переводы строк на пробел
59удаление первых пустых строк
60удаление последних пустых строк
61удаление по краям пустых строк
62удаление более одной пустой строки
63удаление всех пустых строк
64удаление всех табов в строках
66 удаление всех пустых строк
  пустые строки могут содержать пустые символы: Chr(9), Chr(10), Chr(12), Chr(13), Chr(32)
  (перенос страницы, табуляция, возврат каретки, перевод строки и пробел)
  Различные замены и удаления объектов.
65замена всех переносов подряд \r и \n на \r\n (@CR и @LF на @CRLF)
70
75
Удаление тегов в html или конвертация htm* в txt без дополнительного форматирования.
  70 - часть тегов заменяются на пробел.
  75 - теги удаляются.
72 Замена ссылки-мнемоники html на символы. Описание (см. Мнемоники в HTML)
  &plusmn; будет заменён на символ ±.
в версии 29.8 добавлена мнемоника html5.
  &pm; будет заменён на символ ±.
  &phone; будет заменён на символ .
Для просмотра символов, кодов и мнемоники можно воспользоваться командой symvw.
73 Замена кодов на символы.
1. Замена кодов html на символы:
  код &#8364; будет заменён символом .
2. Замена кодов xhtml на символы:
  код &#x20AC; будет заменён символом .
3. Замена кодов html и xhtml, значения которых более 65535 на специальные символы, состоящие из 2-х символов:
  код &#119964; или &#x1D49C; будет заменён символом 𝒜 (тоже что и &#55349;&#56476; или &#xD835;&#xDC9C;)
  код &#120120; или &#x1D538; будет заменён символом 𝔸 (тоже что и &#55349;&#56632; или &#xD835;&#xDD38;)
4. Замена ссылки-мнемоники html на символы (тоже что и режим 72)
74 Удаление тегов в html или конвертация htm* в txt с дополнительным форматированием.
При получении текста из htm параметр постарается:
  1. Сохранить структуру табличных данных в тегах <table> (если это возможно).
  2. Сохранить структуру данных в тегах <pre>, <code>, <listing>, <xmp>, <plaintext>.
  3. Сохранить структуру нумерованных списков в тегах <ol> с поддержкой значений атрибутов:
    type - вид маркера списка со значениями <ol type="A | a | I | i | 1" start="5" reversed>...</ol>.
      A, a (буквенный счётчик); I, i (римский счётчик); 1 (числовой счётчик).
    start - номер, с которого будет начинаться список.
    reversed - меняет нумерацию в списке на обратный порядок.
    так же поддерживаются все цифровые и буквенные счётчики в теге style <ol style list-style-type="...">.
    (пока не поддерживаются отдельные атрибуты для тегов <li...>, возможно в будущем будет реализовано).
  4. Сохранить структуру маркерованных списков в тегах <ul> с поддержкой значений атрибутов:
    type - вид маркера списка со значениями <ul type="circle | disc | square | none">...</ul>.
      К элементам списка добавляется: ○ circle; • disc (по умолчанию); ◆ square; без добавления символа none.
  5. Сохранить структуру маркерованных списков в тегах <menu>, <dir>.
  6. Сохранить структуру списков в тегах <optgroup>, <option>, <blockquote>, <input> и др.
  7. Сохранить начальные и внутренние отступы.
Далее производится дополнительное форматирование:
  8. Удаление однострочных и многострочных комментариев.
  9. Удаление "шапки" htm, стилей и скриптов.
 10. Удаление всех оставшихся тегов.
 11. Замена мнемоники и кодов html (режим 73).
 12. Удаление переносов в предложениях (если это возможно).
 13. Удаление "мусора" и конечных пустых символов.
 14. Удаление начальных, конечных и лишних пустых строк.
Увидеть результат работы параметра можно воспользовавшись одной из команд:

;; просмотреть форматированный текст файла htm, html, chm...
sends=`C:\File.htm textv=GLOBALSENDS<x1>||pos<1>
;; просмотреть форматированный текст html в txt
sends=`$f209\Htm2Txt.htm textv=GLOBALSENDS<x1>||viewtext<Text|0|0|0|0|Consolas>||pos<1>

Параметр тестируется, будет улучшаться по мере нахождения неточностей.
Если на каких-либо файлах (htm, html, xhtml, chm, mht) некорректно извлекается текстовая информация или остаётся "мусор",
то вы можете их прислать для исправления форматирования...
80 Декодирование в тексте фраз URL UTF-8.
(декодирует "%D0%A3%D1%82%D0%B8%D0%BB%D0%B8%D1%82%D0%B0" в слово "Утилита")
тоже самое, что и fun_convert6=(?i)((?:[=%][\dA-F]{2})+)||_StringConv('$1','#U¤¤?D65001') , но быстрее при повторяющихся фразах.



© Аверин Андрей для Total Commander Image  Averin-And@yandex.ru