Запросить демо

Вебинар о Лучших практиках единого источника · 25 июня 2024, 18:00 (МСК)

Зарегистрироваться
Запросить демо

Регулярные выражения для технических писателей

05.06.2024

Содержание статьи:

Представьте себе ситуацию, когда техническому писателю нужно отредактировать огромный объем текста. Эта задача сложна сама по себе. Но (ради чистоты эксперимента) давайте усложним ее еще больше, ведь технические писатели оказываются в сложных ситуациях чаще, чем принято считать. Представим, что техрайтер по умолчанию не знает, как пользоваться регулярными выражениями…

Это как оказаться в лабиринте без карты. Любое движение в неправильную сторону может привести к неприятным последствиям. Например, вам нужно заменить в тексте все случаи дефиса на тире или поменять на точки все запятые в десятичных дробях (такое возможно при переводе текста с русского на английский язык). Вы начинаете выполнять замену обычным способом, но почему-то в длинные тире превращаются не только дефисы, но и все минусы в формулах, а запятые меняются на точки не только в дробных числах, но и во всех остальных случаях.

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

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

Что такое регулярные выражения?

Регулярные выражения — это шаблоны поиска и замены фрагментов текста, доступные в большинстве современных редакторов.

Для создания шаблона используются метасимволы (символы-джокеры, wildcard characters), каждый из которых соответствует любым символам из определённой группы. Например, \S обозначает любой символ, кроме пробела, а \d — любую цифру. Джокеры можно в произвольном порядке комбинировать с обычными символами, накладывать на них разнообразные условия и группировать при помощи скобок. Это и позволяет настроить умную автозамену.

Регулярные выражения (регэкспы, от англ. regular expressions) или регулярки – это последовательности символов, которые используются для поиска и сопоставления шаблонов в тексте. Они позволяют осуществлять гибкий и эффективный поиск, а также замену определенных фрагментов текста.

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

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

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

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

  • «.» (точка) – этот метасимвол соответствует любому одиночному символу, кроме символа новой строки. Например, «a.» будет соответствовать «ab», «ac», но не «a\n».
  • «^» (каретка) – этот метасимвол соответствует началу строки. Например, «^a» будет соответствовать строкам, которые начинаются с символа «a».
  • «$» (доллар) – этот метасимвол соответствует концу строки. Например, «a$» будет соответствовать строкам, которые заканчиваются на символ «a».
  • «*» (звездочка) – этот метасимвол соответствует нулю или более повторениям предыдущего символа или группы символов. Например, «a» будет соответствовать «a», «aa», «aaa» и т.д.
  • «+» (плюс) – этот метасимвол соответствует одному или более повторениям предыдущего символа или группы символов. Например, «a+» будет соответствовать «a», «aa», «aaa» и т.д., но не пустой строке.
  • «?» (вопросительный знак) – этот метасимвол соответствует нулю или одному повторению предыдущего символа или группы символов. Например, «a?» будет соответствовать «a» или пустой строке.

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

Как пользоваться регулярными выражениями в текстовом редакторе?

Приведем несколько рекомендаций по использованию регулярных выражений в текстовом редакторе:

  • Изучите основы. Прежде чем начать использовать регулярные выражения, ознакомьтесь с их основными концепциями и синтаксисом. Понимание того, как они работают, поможет вам эффективно применять их в своей работе.
  • Тестируйте выражения. В большинстве текстовых редакторов можно протестировать, правильно ли были применены регулярные выражения, и отменить замену, если она выполнена неправильно.
  • Осторожно с метасимволами. Метасимволы в регулярных выражениях имеют особое значение и могут повести себя непредсказуемо, если вы настроили их неправильно. Убедитесь, что вы понимаете значение каждого метасимвола и используйте экранирование (\) при необходимости.
  • Читайте сопровождающую документацию. Многие текстовые редакторы предлагают подсказки и документацию по регулярным выражениям. Воспользуйтесь этой функцией, чтобы получить дополнительную информацию о синтаксисе и возможностях регэкспов.
  • Экспериментируйте и учите. Лучший способ освоить материал – это практика. Экспериментируйте с различными выражениями, решайте задачи и учитесь на ошибках.

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

Особенности использования регулярных выражений при работе с разметкой

При работе с разметкой (Markup), такой как HTML, XML, Markdown и другими, использование регулярных выражений имеет свои особенности и отличия от работы в текстовом редакторе:

  • Структура разметки. Разметка обычно имеет строгую структуру с определенными элементами и их атрибутами. При использовании регулярных выражений нужно учитывать эту структуру.
  • Работа с тегами. Регулярные выражения могут быть полезны при поиске, замене или извлечении информации из HTML или XML тегов. Например, можно написать выражение для поиска всех тегов <a> с определенным атрибутом href. Оно будет выглядеть следующим образом:

<a\s[^>]*href=»([^»]*)»[^>]*>

Где:

  • <a\s: Соответствует открывающему тегу <a> с последующим пробелом (символ \s соответствует любому  символу пробела).
  • [^>]*: Соответствует нулю или более символов, не являющихся символом >, т.е. это «ноль или более символов, кроме закрывающего тега >».
  • href=»([^»]*)»: Соответствует атрибуту href с его значением в кавычках. ([^»]*) соответствует любой последовательности символов, не включая символ кавычки «, и захватывает его в группу.
  • [^>]*: Снова соответствует нулю или более символов, не являющихся символом >.
  • >: Соответствует закрывающему тегу >. Это выражение найдет все теги `<a>` с атрибутом `href` и захватит значение этого атрибута в группу. Вы можете использовать это выражение в сочетании с функциями замены или извлечения в вашем текстовом редакторе или программе для обработки регулярных выражений.
  • Обработка атрибутов. Регулярные выражения позволяют обрабатывать значения атрибутов в разметке. Например, можно написать выражение для извлечения всех ссылок из HTML тегов <a> и их атрибутов href. Оно будет выглядеть следующим образом:

Для извлечения всех ссылок из HTML тегов `<a>` и их атрибутов `href` можно использовать следующее регулярное выражение:

<a\s[^>]*\bhref=»([^»]*)»[^>]*>

Где:

  • <a: Соответствует открывающему тегу <a>.
  • \s[^>]*: Соответствует  символу пробела после <a> и любому количеству символов, кроме >, что означает, что мы ищем атрибуты внутри тега.
  • \bhref=»([^»]*)»: Соответствует атрибуту href с его значением в кавычках. ([^»]*) захватывает значение атрибута href в группу.
  • [^>]*: Соответствует нулю или более символов, не являющихся >.
  • >: Закрывающий тег >. Это выражение будет искать все теги <a> с атрибутом href и захватывать значения их атрибутов href в группу. Эту группу можно использовать для извлечения ссылок из HTML.
  • Учет вложенных элементов. При работе с разметкой важно учитывать вложенность элементов. Регулярные выражения следует писать таким образом, чтобы учитывать вложенность элементов и работать с ней корректно.
  • Игнорирование комментариев. В разметке могут присутствовать комментарии, которые нужно игнорировать при обработке. Регулярные выражения могут быть настроены таким образом, чтобы игнорировать комментарии или обрабатывать только контент между тегами.

Таким образом, отличия от работы в текстовом редакторе в том, что при работе с разметкой нужно учитывать не только текст, но и его структуру и контекст. Из-за этих факторов регулярные выражения при работе с разметкой могут быть более сложными и требовать более тщательной настройки.

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

Обычно инструмент активируется через функцию «Найти и Заменить» (шорткат CTRL + H) в текстовом редакторе. Синтаксис регулярных выражений может варьироваться в различных редакторах, поэтому при необходимости следует обращаться к справке. Необходимо помнить, что любая автоматическая замена может непредвиденно нарушить ваш текст, т.е. изменить то, что вы не планировали изменять. Поэтому рекомендуется создавать резервные копии и внимательно проверять, соответствуют ли результаты вашим запросам.

Для начала работы вам понадобится краткий справочник по синтаксису регулярных выражений:

Спецсимволы (метасимволы):

  • `.`: Соответствует любому символу, кроме символа новой строки.
  • `^`: Соответствует началу строки.
  • `$`: Соответствует концу строки.
  • `\`: Используется для экранирования спецсимволов (экранирование в регулярных выражениях позволяет использовать специальные символы как обычные символы и указывать, что они должны быть найдены в тексте именно в том виде, в котором они записаны в регулярном выражении).

Классы символов (джокеры, т.е. символы, заменяющие любые другие):

  • `[…]`: Соответствует любому символу внутри скобок.
  • `[^…]`: Соответствует любому символу, не включенному в скобки.
  • `\d`: Соответствует цифровому символу (эквивалентно `[0-9]`).
  • `\D`: Соответствует любому символу, не являющемуся цифрой.
  • `\w`: Соответствует буквенно-цифровому символу (эквивалентно `[a-zA-Z0-9_]`).
  • `\W`: Соответствует любому символу, не являющемуся буквенно-цифровым.
  • `\s`: Соответствует любому символу пробела (пробел, табуляция, новая строка и т.д.).
  • `\S`: Соответствует любому символу, не являющемуся пробельным.

Квантификаторы:

  • `*`: Соответствует нулю или более вхождениям предыдущего символа.
  • `+`: Соответствует одному или более вхождениям предыдущего символа.
  • `?`: Соответствует нулю или одному вхождению предыдущего символа.
  • `{n}`: Соответствует ровно n вхождениям предыдущего символа.
  • `{n,}`: Соответствует по крайней мере n вхождениям предыдущего символа.
  • `{n,m}`: Соответствует от n до m вхождений предыдущего символа.

Группировка и альтернативы:

  • `(…)`: Создает группу символов.
  • `|`: Используется для указания альтернативных вариантов.


Якоря и условия:

  • `\b`: Соответствует границе слова.
  • `\B`: Соответствует позиции, не являющейся границей слова.
  • `(?=…)`: Соответствует, если после текущей позиции следует указанное выражение.
  • `(?!…)`: Соответствует, если после текущей позиции не следует указанное выражение.

Модификаторы:

  • `i`: Регистронезависимый поиск.
  • `g`: Глобальный поиск (все вхождения).
  • `m`: Многострочный поиск (учитываются начало и конец каждой строки).

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

Примеры регулярных выражений

Приведем несколько примеров регулярных выражений с их расшифровкой.

Начнем с самого простого. Поиск числа в тексте:

В поле поиска введите регулярное выражение: \d+ Будет найдена последовательность из одной или более цифр. Поле замены при этом можно оставить пустым, если нужно просто найти числа в тексте.

Замена пробелов на подчеркивания:

В поле поиска введите регулярное выражение: \s+ Будет найдена последовательность из одного или более пробельных символов. В поле замены введите символ подчеркивания `_`.

Удаление знаков препинания:

В поле поиска введите регулярное выражение: [^\w\s] Будет найден любой символ, который не является буквой, цифрой или пробельным символом. Знак экранирования при этом интерпретируется как «кроме». Поле замены можно оставить пустым, чтобы просто удалить символы.

Замена года на 2024:

В поле поиска введите регулярное выражение: \b\d{4}\b Будет найдена последовательность из четырех цифр, которая является отдельным словом (годом). В поле замены введите 2024.

Поиск email адресов:

В поле поиска введите регулярное выражение: \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b

Будет найдена строка, которая соответствует формату email адреса. Поле замены оставьте пустым, если нужно просто найти email адреса в тексте.

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

Как пользоваться регулярными выражениями в Документерре?

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

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

Каждый проект в Документерре сопровождается CSS-файлом, который также можно обрабатывать с помощью регулярных выражений. Например:

  • Извлечение данных. Используйте регулярные выражения для извлечения информации из CSS файлов, такой как классы, идентификаторы или свойства стилей.
  • Поиск ошибок. Используйте регулярные выражения для поиска ошибок или несоответствий в CSS-коде, таких как неправильно оформленные свойства или синтаксические ошибки.

Если ваша документация на портале содержит HTML-код, вы можете воспользоваться регулярными выражениями для следующего:

  • Извлечение данных. Используйте регулярные выражения для извлечения информации из HTML кода, такой как ссылки, изображения или заголовки.
  • Поиск и замена. Используйте регулярные выражения для поиска и замены определенных элементов или шаблонов в HTML коде. Например, вы можете использовать регулярные выражения для удаления всех тегов <script> из HTML файла.

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

***

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

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

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