Форум поддержки пользователей LibreOffice, Apache OpenOffice

Главная категория => Макросы => Тема начата: siti от 7 июня 2022, 10:58

Название: Регулярные выражения
Отправлено: siti от 7 июня 2022, 10:58
Сделал макрос для замены ячеек в calc через регулярные выражения.
Однако не могу осилить создание самого выражения. Получается пока только если ставить спецсимвол, например "_" перед заменяемым текстом (_Тест65).

Пример текстовых ячеек:
Любой Текст
Тест-65
(р)Любой Текст/15.05
(с)ЛюбойТекст55

Какое должно быть регулярное выражение, чтобы результаты замены на строку "Замена" были следующими (меняем целиком ячейку на "Замена" если в ней нет (р) или (с)):

Замена
Замена
(р)ЛюбойТекст/15.05
(с)ЛюбойТекст55

тестирую тут: https://regex101.com/
Название: Re: Регулярные выражения
Отправлено: siti от 7 июня 2022, 11:42
pattern = "\b_[ ()А-ЯA-Za-zа-я0-9._%+-]+" 'это с подчеркиванием
но хочется отказаться от этого неудобства
Название: Re: Регулярные выражения
Отправлено: mikekaganski от 7 июня 2022, 11:55
(р) и (с) могут быть в любом месте или только вначале?
Название: Re: Регулярные выражения
Отправлено: siti от 7 июня 2022, 12:06
Цитата: mikekaganski от  7 июня 2022, 11:55(р) и (с) могут быть в любом месте или только вначале?
только в начале
Название: Re: Регулярные выражения
Отправлено: mikekaganski от 7 июня 2022, 12:09
Следующий регекс находит только ячейки, в которых нет ни (р), ни (с) в любой позиции.
^(?:(?!\([рс]\)).)*$

Источник:
https://stackoverflow.com/a/406408/1397376

А для "только в начале" проще:
^(?!\([рс]\)).*$
Название: Re: Регулярные выражения
Отправлено: siti от 7 июня 2022, 12:12
Цитата: mikekaganski от  7 июня 2022, 12:09А для "только в начале" проще:
Михаил, спасибо большое!