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

Поиск и замена текстаРегулярные выражения или регэкспы (от. англ. Regular expressions) — это специфический язык, разработанный специально для поиска и обработки любого текста.

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

Сегодня наиболее широко распространен формат PERL-подобных регэкспов. Он стал популярным в силу того, что имеет расширенный синтаксис и позволяет каждый найденный фрагмент выразить через переменную, которая может быть использована для гибкой замены.

Бесплатная программа, представленная на данной странице, как раз и помогает нам искать и заменять текст во множестве файлов, используя PERL-подобные регулярные выражения.

uvFilesCorrector 5.2 betaЗолотая медаль BestFREE.ru

Регулярные выражения uvFilesCorrector 5.2 beta
Рейтинг:
Размер:
1.0 MБ (инсталлятор)
Интерфейс:Русский
Платформа:
Windows XP/Vista/7/8/10 32&64-bit
Обновлено:2019-03-26
Разработчик:
Платный аналог:  





uvFilesCorrector 5.2 beta

Бесплатная программа для поиска и замены текста с использованием регулярных выражений. Она позволяет задавать маску поиска текста и каждый найденный фрагмент выражать через переменную, которую можно использовать на этапе замены.


Галерея скриншотов



Как я и обещал в предыдущей статье, сегодня мы продолжим разговор о программах, которые могут пригодиться при оптимизации Вашего сайта (и не только ;)). И на этот раз мы коснемся вопроса о работе с текстом.

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

Если вручную править сотни файлов, чтобы заменить в них, например, всего лишь формат даты и времени, то Вам понадобится не один день! Однако эту же проблему замены текстовых фрагментов можно решить и в автоматическом режиме всего за пару минут! И в этом нам поможет программа uvFilesCorrector.

Особенности программы

Для поиска и замены текста существуют сотни как платных, так и бесплатных приложений, но я выбрал именно uvFilesCorrector, и вот почему:

  • программа работает с кодировкой UTF-8;
  • имеет простой интерфейс;
  • позволяет производить замену, как конкретного текста, так и найденного при помощи регулярных выражений;
  • имеет встроенный мастер составления регулярных выражений;
  • поддерживает язык запросов xPath;
  • обрабатывает практически неограниченное количество файлов за минимальный промежуток времени;
  • позволяет обработать данные в буфере обмена.

Основное достоинство  uvFilesCorrector, естественно, работа с регулярными выражениями, аналогичными используемым в языке программирования Perl.

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

Плюс ко всему, uvFilesCorrector имеет еще и полуавтоматический режим работы. В этом случае Вы выделяете вручную фрагмент текста в любом приложении, подлежащий обработке, нажимаете сочетание клавиш Ctrl + Shift + X и, при условии совпадения маски поиска, сразу же получаете фрагмент с уже произведенными заменами!

Программ подобного функционала немного даже среди платного софта! Аналогом же можно назвать утилиту Replace Text in Many Files, которая тоже использует PERL-подобный синтаксис регулярных выражений:

Сравнение с платным аналогом

Особенности uvFilesCorrector Replace Text in Many Files
Стоимость бесплатно 817 руб.
Поиск и замена во множестве файлов + +
Замена текста с использованием регулярных выражений + +
Поддержка Юникода +/- (частичная, только UTF-8) +
Поддержка xPath + -
Работа с буфером обмена + -
Работа через командную строку + -

Единственным слабым местом uvFilesCorrector по сравнению с платным аналогом является малое количество поддерживаемых кодировок текста. По сути, мы можем работать только со стандартными WIN-215X и UTF-8-файлами, тогда как Replace Text in Many Files поддерживает практически все возможные кодировки, что позволяет ему работать с RTF-файлами.

В остальном же uvFilesCorrector остается только в плюсе, а встроенный мастер составления регулярных выражений позволяет быстро приступить к работе, даже не зная синтаксиса!


Установка uvFilesCorrector

Для начала работы с программой ее нужно установить. Хотя, если она уже была Вами установлена, то перенести ее на другой ПК Вы можете просто скопировав, например, на флешку. Она будет работать, как portable-приложение!

Для установки же скачайте архив, запустите инсталлятор и следуйте подсказкам на экране – ничего сложного, просто все время жмите «Далее» :).

Интерфейс программы

После завершения процесса инсталляции откроется основное окно программы:

Интерфейс uvFilesCorrector 5.2 beta

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

Далее идет «Список замен», в который входит ряд функциональных ссылок для создания/правки параметров поиска и замены, а также, непосредственно, список созданных Вами правил обработки файлов. Внизу же расположена секция, состоящая из двух вкладок с инструментами для работы с файлами и буфером обмена.

Вот и весь интерфейс :). С остальными же функциональными окнами мы познакомимся далее на конкретных примерах.

Создание правил простой замены текста

Первое, с чего мы начнем, будет попытка заставить программу заменить букву «а» на «б» :). Это самый простой пример, но он познакомит нас с основными принципами работы в uvFilesCorrector.

Итак, для того, чтобы сделать мелкую пакость :) создать правило замены, мы должны нажать на ссылку «Добавить» и в открывшемся окошке написать что, и чем мы будем заменять (в нашем примере – букву «а» на «б»), после чего нажать кнопку «Ok»:

Создание простого правила поиска и замены

Если все сделано правильно, то мы получим готовое правило в списке замен, которое будет отмечено галочкой. Обратите внимание на нее! Для того, чтобы правило действовало, чекбокс рядом должен обязательно быть активным (и наоборот – если нужно временно отключить правило, уберите галочку).

Правило готово, можно его применять. Но перед этим нужно ставить список файлов, в которых должна производиться замена. Для этого идем в нижнюю секцию основного окна и выбираем вкладку «Файлы». Затем в строке «Папка» жмем на кнопку с многоточием и выбираем директорию, в которой находятся нужные нам файлы.

Программа выдаст список, содержащий все текстовые файлы, найденные в указанном нами месте, поэтому нам может пригодиться сортировка файлов по маске, доступная в выпадающем списке справа от строки с адресом рабочей папки. Теперь осталось только отметить нужный файл и нажать кнопку «Заменить»:

Простая замена текста в uvFilesCorrector 5.2 beta

Советую обратить Ваше внимание на некоторые нюансы:

  1. По умолчанию uvFilesCorrector производит замену без учета регистра символов. Если Вам нужно, как в нашем примере, заменить только маленькие буквы только другими маленькими, то перед нажатием кнопки «Заменить» потребуется активировать флажок «Учитывать регистр».
  2. uvFilesCorrector может включить в список файлы не только из текущей выбранной папки, но и из всех ее подпапок. Для этого активируйте чекбокс «Во всех вложенных подпапках» (под строкой с адресом рабочей папки).
  3. Иногда отсеивания файлов по простой маске бывает недостаточно. Например, Вам нужно оставить в списке только файлы, содержащие в названии букву «N». Чтобы это сделать активируйте флажок «Фильтр» (над кнопкой «Заменить») и введите в поле фильтра нужные символы (например, как в нашем случае «N»).
  4. Заметил в программе одно досадное недоразумение. Если адрес рабочей папки кончается слешем (наклонной чертой, как на скриншоте выше), то в названиях всех файлов в списке обрезается первая буква (на скриншоте мы видим имя выбранного файла «аба.txt», хотя должно быть «Баба.txt»). И все бы ничего, но uvFilesCorrector начинает искать не нужный файл, а файл с обрезанным именем, соответственно не находит его и не применяет никаких изменений :(. Эта недоработка серьезно потрепала мне однажды нервы, пока я не понял что к чему. Поэтому, чтобы Вы не попали в такую же ситуацию, всегда удаляйте слеш в конце адреса, если он есть! И будет Вам счастье :)… (исправлено в версии 5.1).

Работа с регулярными выражениями

Перед тем, как читать следующий раздел, взгляните на скриншот:

Правило с регулярными выражениями

Часто на практике требуется нечто гораздо большее, нежели простая замена одной буквы/слова на другую. К сожалению, стандартные средства замены текста в большинстве текстовых редакторов не позволяют произвести такой замены, какую мы видим выше.

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

С uvFilesCorrector Вы сможете обработать регулярным выражением практически неограниченное количество файлов одновременно.

Что же это за «регулярные выражения» такие? В общих чертах, регэкспы (от англ. RegExp (сокр. Regular expressions)) – это специальные конструкции, которые при помощи спецсимволов и обычного текста позволяют задать маску поиска текста.

Посмотрим на пример из скриншота выше. Мы видим, что в поле «Что найти:» находится следующее выражение:

<p class=”ct(\d)”>(.+?)</p>

Оно соответствует любому абзацу (<p> - тег абзаца в HTML) с классом оформления ct(любая цифра), содержащему любой произвольный текст. То есть в данной маске поиска мы используем всего два регулярных выражения: «\d», для поиска цифры и «.+?» для нахождения текста между тегами абзаца.

Теперь взглянем на поле «Заменить на:». Здесь конструкция у нас несколько видоизменяется:

<p class=”ct$1”>Стиль $1</p>

Вместо использованных выше регэкспов у нас появилась переменная $1. В результатах обработки мы видим, что произвольный текст в абзацах заменился на слово «Стиль» и номер стиля, взятый из класса абзаца.

Круто, правда :)? И так можно менять что угодно! А с uvFilesCorrector не обязательно знать синтаксис регулярных выражений – их поможет Вам составить специальный «Мастер». Чтобы им воспользоваться нужно активировать пункт «Регулярные выражения» (включается обработка регэкспов), а затем нажать соответствующую ссылку:

Принцип составления регулярного выражения

Окно мастера тоже содержит три секции. Первая – это строка ввода регулярного выражения. Вторая – два текстовых поля для проверки правильности составления регэкспа. Третья – краткий справочник по синтаксису выражений, которого обычно достаточно для повседневной работы.

Для составления маски поиска нужно сразу решить, что мы хотим найти и заменить в будущем. Замечу, что значимыми элементами поиска будут только переменные, тогда как окружающий текст и теги служат лишь для «наводки» на нужные строки. Переменные же, как легко догадаться, и есть те фрагменты регулярных выражений, которые мы будем использовать в маске замены.

В принципе, данных в справочнике достаточно, чтобы составить выражение, практически любой сложности, но и здесь есть несколько нюансов, которые придется учитывать…

Особенности регулярных выражений в uvFilesCorrector

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

Применимо к предыдущему нашему примеру, попробуем убрать скобки у выражения (\d) и мы получим только одну переменную, которая будет содержать текст абзаца, но мы уже не сможем вставить номер стиля в маску замены!

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

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

Для включения «ленивого» алгоритма нужно всего лишь приписать в конце конструкции знак вопроса – «?». В предыдущем примере ограничение у нас наложено на вторую переменную. Если же мы уберем знак вопроса, то результат поиска будет несколько непредсказуемым:

Пример маски поиска без ограничения жадности

Как видим, маска поиска захватила все строчки, определив переменные только в первой строке, а остальные, включив как продолжение текста второй переменной.

Последнее, о чем стоит упомянуть – экранирование спецсимволов. Частой ошибкой является употребление разнообразных символов (например, банальной точки), используемых в обычном тексте, в качестве маркеров поиска.

Простой пример: есть строка «Стиль 1. Вася Пупкин», и нам из нее нужно получить имя, которое употребляется после точки (то есть «Вася Пупкин»). Найти его можно несколькими способами, но самый очевидный, на мой взгляд – использовать точку в качестве разделителя двух множеств текстовых данных. В этом случае выражение будет следующим:

«(.*?). (.+)»

То есть, мы выразили текст «Стиль 1» через «(.*?)», указали точку и пробел после нее, как разделитель, а вторым регэкспом «(.+)» нашли нужное имя. Но на практике получится следующий набор переменных:

$1.  Стил

$2.  1. Вася Пупкин

Точка была обработана, как «любой символ» и исключилаи мягкий знак, вернув все, что после него во вторую переменную. Как же нам исправить положение? Достаточно просто заэкранировать точку при помощи обратного слеша «\»:

«(.*?)\. (.+)»

Вот и вся премудрость :). Так нужно поступать с такими символами, как: «{}», «()», «$» и другими, которые используются в синтаксисе регулярных выражений.

Использование xPath

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

Несмотря на изначальную ориентацию на XML, он поддерживает любые языки разметки, использующие теги. То есть, его вполне можно применить и для привычного HTML.

Смысл этого языка в том, чтобы найти определенную структуру тегов в документе и произвести замену только тогда, когда эта структура будет совпадать, а не во всех найденных масках поиска.

В следующем примере мы несколько дополним наш тестовый файл и попытаемся произвести замену только в том случае, если стиль абзаца будет «ct2». Допустим, мы хотим заменить слово «Стиль» на «Оформление» в абзаце <p class=”ct2”>.

Для этого активируем флажок «XML xPath» и введем в строку нужное выражение, которое будет соответствовать структуре <блок><абзац со стилем «ct2»>:

Ограничение замены при помощи выражения на xPath

Короткий справочник по выражениям xPath находится тут же ниже. Если же Вы хотите подробнее узнать о синтаксисе языка запросов, ознакомьтесь с дополнительными примерами в справке или на сайте разработчиков.

Единственным недостатком использования xPath является изменение иерархической табуляции в оформлении Вашего кода, то есть лишних отступов, которые, в принципе, можно убрать следующим правилом uvFilesCorrector ;).

Работа с содержимым буфера обмена

Как уже неоднократно упоминалось, uvFilesCorrector может работать не только с реальными файлами, но и с содержимым буфера обмена Windows! Для того, чтобы посмотреть его содержимое Вам потребуется перейти на вкладку «Буфер обмена». Если сохраненный клип соответствует одному из ранее созданных правил, Вы можете это правило применить, нажав кнопку «Заменить»:

Обработка содержимого буфера обмена

Кстати, если Вы не особенно разобрались с синтаксисом xPath, то для создания условий можете попробовать использовать альтернативный способ – кнопку «Заменить при условии»:

Окно добавления условий замены

Последнее, что нужно упомянуть, это то, что для работы программы с буфером обмена не обязательно каждый раз копировать и обрабатывать фрагменты вручную. Можно просто выделить нужный текст и воспользоваться специальной комбинацией клавиш – Ctrl + Shift + X. Программа автоматически обработает выделенный фрагмент и тут же вставит на его место уже исправленный!

Достоинства и недостатки программы

Плюсы программы uvFilesCorrector 5.2 betaПлюсы:

  • удобный интерфейс;
  • работа с масками поиска и замены;
  • гибкая система настройки исключений с xPath;
  • работа с буфером обмена;
  • возможность работы через командную строку с написанием BAT-файлов.

Минусы программы uvFilesCorrector 5.2 betaМинусы:

  • ошибка обработки при наличии слеша в строке адреса папки (исправлено в версии 5.0);
  • мало поддерживаемых кодировок;
  • нет счетчика произведенных замен (исправлено в версии 5.0).

Выводы

На сегодняшний день uvFilesCorrector – единственная известная мне бесплатная программа, которая позволяет достаточно просто создавать сложные маски поиска и замены текста, и корректно работает с кодировкой UTF-8.

Для эффективной работы с ней не нужно знать на память весь синтаксис регулярных выражений, поскольку основные его литералы всегда перед глазами в кратком справочнике. К тому же, uvFilesCorrector имеет гибкую систему настройки замен, благодаря встроенной поддержке языка xPath.

Если Вам часто приходится менять текст в большом количестве файлов, то советую потратить пару часов на изучение uvFilesCorrector, и она в будущем сэкономит Вам не один день кропотливого труда!

P.S. Разрешается свободно копировать и цитировать данную статью при условии указания открытой активной ссылки на источник и сохранения авторства Руслана Тертышного.

P.P.S. Если в Ваши планы не входит сложная правка текстовых документов, а Вам лишь нужно заменить конкретные строки конкретными значениями, то для этого вполне достаточно будет возможностей следующей программы:
https://www.bestfree.ru/soft/file/replace.php



Похожие программы:

Поиск и замена текста: Словогрыз
Средство поиска и замены текстов по маске. Программа умеет находить и заменять в тексте не только строго заданные слова и фразы, а нечто, подходящее общему заданному шаблону и менять части найденного текста.
Замена текста: APE Utilities for the web designer
Маленькая программулька, экономящая кучу времени на замене повторяющихся текстов в большом количестве файлов.
Переименование файлов: ReNamer
Небольшой, но очень гибкий инструмент для переименования файлов, поддерживающий все стандартные процедуры переименования, включая префиксы, суффиксы, замену, смену регистра; а также, удаление кавычек, добавление счетчика, удаление цифр или символов, изменение расширений и многое другое.
Блокнот: TigerPad
Текстовый и HTML редактор со множеством функций. Он имеет небольшой размер, быстро работает, красиво выглядит.
Файл менеджер: Free Commander
Бесплатный файловый менеджер, аналогичный Total Commander.
Быстрый поиск: DocFetcher
Программа для быстрого поиска файлов в указанных папках как по имени файла, так и по его содержимому.





** Задавать вопросы лучше на нашем форуме. Просто зарегистрируйтесь и создайте новую тему.

Полезный совет:



Система проверки ошибок от Mistakes.ru