Подготовка регулярных выражений для работы с текстами в 1С

21.03.25

Разработка - Универсальные функции

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

Специфика символов в 1С

 

В 1С для представления символов новой строки и других управляющих символов, таких как табуляция, вертикальная табуляция и т. д., используются специальные константы, доступные через объект Символы. Это значительно отличается от стандартных символов, таких как \n (новая строка) или \t (табуляция), используемых в других языках программирования.

В 1С для текста используются следующие символы:

  • Символы.ПС — символ новой строки (LF).
  • Символы.ВК — символ возврата каретки (CR).
  • Символы.Таб — горизонтальная табуляция (Tab).
  • Символы.ВТаб — вертикальная табуляция (Vertical Tab).
  • Символы.ПФ — символ перевода страницы (FF).
  • Символы.НПП — неразрывный пробел (NBSP).

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

 

Адаптация регулярных выражений для 1С

Часто при написании регулярных выражений в других языках программирования используется символ \n для новой строки и \t для табуляции. Однако в 1С такие символы нужно заменять на соответствующие константы, такие как Символы.ПС и Символы.Таб.

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

(\r?\n){2}$

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

 

Функция для подготовки регулярного выражения в 1С

Функция ПодготовитьРегуляркуДля1С(Регулярка)
    // Заменяем символы на соответствующие 1С эквиваленты
    Регулярка = СтрЗаменить(Регулярка, "\n", Символы.ПС);  // ПС (LF)
    Регулярка = СтрЗаменить(Регулярка, "\r", Символы.ВК);  // ВК (CR)
    Регулярка = СтрЗаменить(Регулярка, "\t", Символы.Таб); // Таб
    Регулярка = СтрЗаменить(Регулярка, "\v", Символы.ВТаб); // ВТаб (Vertical Tab)
    Регулярка = СтрЗаменить(Регулярка, "\f", Символы.ПФ);  // ПФ (FF)
    Регулярка = СтрЗаменить(Регулярка, "\u00A0", Символы.НПП);  // NBP (Non-Breaking Space)

    Возврат Регулярка;
КонецФункции

 

Как это работает

  1. В этой функции мы используем стандартную функцию СтрЗаменить для замены символов регулярного выражения на их соответствующие аналоги в 1С. Например, \n заменяется на Символы.ПС (символ новой строки), а \r — на Символы.ВК (возврат каретки).

  2. Функция выполняет замену для всех распространенных управляющих символов:

    • \n на Символы.ПС (LF),
    • \r на Символы.ВК (CR),
    • \t на Символы.Таб (Tab),
    • \v на Символы.ВТаб (Vertical Tab),
    • \f на Символы.ПФ (FF),
    • \u00A0 на Символы.НПП (Non-Breaking Space).
  3. После выполнения этой функции, вы получите адаптированное регулярное выражение, готовое для использования в 1С.

 

Пример использования

 

Если у вас есть регулярное выражение для поиска двух последовательных пустых строк в конце текста:

(\r?\n){2}$

После применения функции ПодготовитьРегуляркуДля1С, результат будет таким:

(Символы.ВК?Символы.ПС){2}$

Это выражение теперь корректно работает в 1С, учитывая специфику платформы.

 

Заключение

 

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

Регулярные выражения Регулярка в 1С Подготовка регулярки Текстовые данные Заменить символы Новый формат Символы Возврат каретки Горизонтальная табуляция Вертикальная табуляция Перевод страницы Неразрывный пробел Редактирование текста Обработка текста Регулярные выражения в 1С.

См. также

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

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

23.06.2024    11991    bayselonarrend    21    

162

Универсальные функции Программист Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

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

21.05.2024    29265    dimanich70    83    

151

Механизмы платформы 1С Программист Бесплатно (free)

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    26380    SeiOkami    48    

137

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

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

28.08.2023    17805    YA_418728146    8    

170

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    4725    78    progmaster    11    

4

Механизмы платформы 1С Программист Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Рассмотрим новую возможность 8.3.24 и как её можно эффективно использовать

27.06.2023    32197    SeiOkami    33    

118
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SerVer1C 880 21.03.25 09:25 Сейчас в теме
(Символы.ВК?Символы.ПС){2}$
Сдаётся мне, что "(\r?\n){2}$" написать всё же проще и быстрее.
2. TMV 14 21.03.25 20:29 Сейчас в теме
(1) но видимо оно не будет работать в 1с
3. SerVer1C 880 21.03.25 23:28 Сейчас в теме
(2) видимо будет
[погоняйте примеры на моём тестере регулярок]
Прикрепленные файлы:
Оставьте свое сообщение