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

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

15 Август 2022, 12:17 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Регулярные выражения  (Прочитано 667 раз)
0 Пользователей и 1 Гость смотрят эту тему.
siti
Форумчанин
***
Offline Offline

Сообщений: 66


« Стартовое сообщение: 7 Июнь 2022, 10:58 »

Сделал макрос для замены ячеек в calc через регулярные выражения.
Однако не могу осилить создание самого выражения. Получается пока только если ставить спецсимвол, например "_" перед заменяемым текстом (_Тест65).

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

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

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

тестирую тут: https://regex101.com/
Записан
siti
Форумчанин
***
Offline Offline

Сообщений: 66


« Ответ #1: 7 Июнь 2022, 11:42 »

pattern = "\b_[ ()А-ЯA-Za-zа-я0-9._%+-]+" 'это с подчеркиванием
но хочется отказаться от этого неудобства
Записан
mikekaganski
Гуру
*******
Online Online

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 2 820


« Ответ #2: 7 Июнь 2022, 11:55 »

(р) и (с) могут быть в любом месте или только вначале?
Записан

С уважением,
Михаил Каганский
siti
Форумчанин
***
Offline Offline

Сообщений: 66


« Ответ #3: 7 Июнь 2022, 12:06 »

(р) и (с) могут быть в любом месте или только вначале?
только в начале
Записан
mikekaganski
Гуру
*******
Online Online

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 2 820


« Ответ #4: 7 Июнь 2022, 12:09 »

Следующий регекс находит только ячейки, в которых нет ни (р), ни (с) в любой позиции.
Код:
^(?:(?!\([рс]\)).)*$

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

А для "только в начале" проще:
Код:
^(?!\([рс]\)).*$
Записан

С уважением,
Михаил Каганский
siti
Форумчанин
***
Offline Offline

Сообщений: 66


« Ответ #5: 7 Июнь 2022, 12:12 »

А для "только в начале" проще:
Михаил, спасибо большое!
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!