Специфика символов в 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С. Например,\nзаменяется наСимволы.ПС(символ новой строки), а\r— наСимволы.ВК(возврат каретки). -
Функция выполняет замену для всех распространенных управляющих символов:
\nнаСимволы.ПС(LF),\rнаСимволы.ВК(CR),\tнаСимволы.Таб(Tab),\vнаСимволы.ВТаб(Vertical Tab),\fнаСимволы.ПФ(FF),\u00A0наСимволы.НПП(Non-Breaking Space).
-
После выполнения этой функции, вы получите адаптированное регулярное выражение, готовое для использования в 1С.
Пример использования
Если у вас есть регулярное выражение для поиска двух последовательных пустых строк в конце текста:
(\r?\n){2}$
После применения функции ПодготовитьРегуляркуДля1С, результат будет таким:
(Символы.ВК?Символы.ПС){2}$
Это выражение теперь корректно работает в 1С, учитывая специфику платформы.
Заключение
При работе с регулярными выражениями в 1С важно учитывать специфику символов новой строки и других управляющих символов, используемых в платформе. С помощью простого подхода, как показано в статье, можно адаптировать стандартные регулярные выражения для корректной работы в 1С, что делает обработку текстов более удобной и эффективной.
Для динамической проверки и отладки регулярных выражений предлагаю использовать обработку //infostart.ru/1c/tools/2347453/
Вступайте в нашу телеграмм-группу Инфостарт