× К оглавлению На главную Об авторе

Дата и время публикации:    

Проблема и решение

1. Суть проблемы

В недавно собранным мной из исходных кодов LibreOffice-7.2 (на момент первой публикации), столкнулся с тем, что вроде бы недавно работающий символ конца строки (\n) регулярного выражения в диалоге "Найти и заменить" вдруг перестал работать, как показано на рисунке 1.1

Рисунок 1.1

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

2. Решение

Чтение документации LibreOffice по использованию регулярных выражений давало понять [3.1], что концом строки являтся символ её конца (\n), применение которого ,как показано на рисунке 1.1, не давали положительных результатов, а одни только отрицательные.

Потратив на поиски пару часов выяснил, что пока для обозначения конца строки в регулярных выражениях LibreOffice все в основном указывают на использование символа (\n), применение которого, как показано на рисунке 1.1, не давало положительного результата достяжения поиска конца строки. Именно, в таком ключе применяется символ регулярных выражений ($) [3.2] .

Данный символ ($) указывает выполнять действие по достяжению конца поиска в текущей текстовой строки, в то время как символ (\n) приводит к разрыву абзаца и перехода на другую строку, что наверное разумно, если исходить из философии действия на текстом, а не рациональности, реализуемой в виде кодов обработки текстовых данных и которой привыкли мыслить программисты.

Поэтому после того, как заменил символ (\n) на ($) в поле "Найти" диалога "Найти и заменить", получил результат, который показан на рисунке 2.1 и соответствующий ожидаемому.

Рисунок 2.1

Как показано на рисунке 2.1, процедура замены прошла нормально без ошибок, а все слова, показанные на заднем плане диалога "Найти и заменить" и следующие в каждой отдельной строке, были объеденены в одну через запятую с одним пробелом после неё.

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

3. Библиография

3.1 LibreOffice. Регулярные выражения

3.2 Regular Expression “\n” doesn’t work

Сайт разработан в соответствии с рекомендациями консорциума W3C для языка разметки HTML5.

Об авторе можно прочитать здесь.

Copyright © 2015-2019 Андрей Ржавсков