[VBScript] ReplaceByRegular - замена текста через регулярные выражения во множестве файлов

Тема в разделе "Банк полезных кодов", создана пользователем Dragokas, 6 мар 2015.

  1. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.498
    Симпатии:
    4.313
    =======================================
    ReplaceByRegular by Dragokas
    =======================================

    - Скрипт для замены текста во множестве файлов согласно регулярным выражениям.

    Состав:
    Regular.txt - список замен
    ReplaceByRegular.vbs - сам скрипт
    Readme.txt - этот файл.

    ---------------------------
    Описание для версии 1.7
    ---------------------------

    Как пользоваться?

    1)
    Копируете файл Regular.txt и ReplaceByRegular.vbs
    в папку, где нужно рекурсивно (с подкаталогами) провести замены текста.

    Текст может быть в кодировках:
    - ANSI
    - UTF-8

    2)
    Откройте Regular.txt (должен лежать рядом со скриптом).
    Создайте перечень замен вида:

    word1=Что ищем1
    word2=Чем заменяем1
    word1=Что ищем2
    word2=Чем заменяем2

    где каждому word1= соостветствует word2=, который под ним находится.
    Так, Вы можете сделать одновременно несколько разных замен.

    word1= принимает для поиска регулярное выражение (писать после знака равенства).
    word2= принимает текст, на который будет произведена замена части, найденной регуляркой, указанной в word1=

    3) Запускаем скрипт ReplaceByRegular.vbs

    Отчет о заменах будет создан в виде файла Replace - log.log рядом со скриптом.

    --------------
    Настройки
    --------------

    1) Список расширений

    Скрипт обрабатывает только файлы с расширениями, список которых указан в его шапке.
    Правый клик по файлу ReplaceByRegular.vbs -> "Изменить"
    Смотрим сюда (строка 5):

    Dim Exts: Exts = "htm;html;txt"

    2) Замена с учетом регистра букв.
    Если Вы хотите отключить учет регистра при поиске по регулярному выражению:
    Правый клик по файлу ReplaceByRegular.vbs -> "Изменить"
    Смотрим сюда (строка 11):

    Dim IgnoreCase: IgnoreCase = false

    и меняем false на true


    ---------------

    В word2 действуют некоторые правила экранирования. Так:

    \\ будет заменен на \
    \^ будет заменен на ^
    \$ будет заменен на $
    \* будет заменен на *
    \+ будет заменен на +
    \? будет заменен на ?
    \. будет заменен на .
    \| будет заменен на |
    \n будет заменен на новую строку
    \r будет заменен на перевод каретки
    \t будет заменен на знак табуляции

    Также есть 2 специальные замены:

    1)

    $$$file$$$ будет заменено на имя файла (+ расширение имени), в котором найдена искомая фраза.

    Например, если файл назывался my.txt
    а шаблоны такие:
    word1=\<a href="default\.htm"\>
    word2=<a href="$$$file$$$">

    то
    <a href="default.htm">
    будет заменено на:
    <a href="my.txt">

    2)

    \@{{{utf8toANSI}}}

    означает, что искомая фраза будет перекодирована из кодировки utf-8 в ANSI,
    где \@ - это подстановка искомой фразы.


    Например, имеем текст в utf-8:
    <title>Привет, regist</title>

    После применения шаблона:
    word1=<title>[^<]*</title>
    word2="\@"{{{utf8toANSI}}}

    Результат будет ANSI-строка (в кавычках):
    "<title>Привет, regist</title>"

    3)

    \@{{{ANSItoUTF8}}}

    означает, что искомая фраза будет перекодирована из кодировки ANSI в utf-8,
    где \@ - это подстановка искомой фразы.

    Например, имеем текст в ANSI:
    <title>Привет, regist</title>

    После применения шаблона:
    word1=<title>[^<]*</title>
    word2="\@"{{{ANSItoUTF8}}}

    Результат будет UTF-8 строка (в кавычках):
    "<title>Привет, regist</title>"

    Обратите внимание, метка BOM автоматически не добавляется.
    Некоторые редакторы могут неверно распознать исходный формат текстового файла.


    P.S. "Я не люблю писать любые виды документации" (© Boban Spasic), но конкретно ЭТУ меня заставил написать regist и я ему это припомню :)
    Вообщем, спасибо ему за разминку мозгов, по причине которой и родился этот скрипт.

    Скрипт сподвигнул написать regist.
     

    Вложения:

    Последнее редактирование: 30 май 2015
    E100, orderman, Kиpилл и 3 другим нравится это.
  2. regist
    Оффлайн

    regist гоняюсь за туманом Ассоциация VN/VIP VIP Разработчик

    Сообщения:
    11.382
    Симпатии:
    5.268
    лучше по умолчанию отключи учёт регистра букв. Посоветовал скрипт на другом форуме, так отработал не с первого раза из-за того, что title заглавными буквами был написан.
     
  3. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.498
    Симпатии:
    4.313
    Готово.
     
    E100 нравится это.
  4. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.498
    Симпатии:
    4.313
    Обновлено до v1.8.2
    Добавлен шаблон \@{{{ANSItoUTF8}}} - замена кодировки фразы поиска с ANSI на UTF-8.
     
    akok, Kиpилл и E100 нравится это.

Поделиться этой страницей