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

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

23 Июль 2017, 15:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Чем заменить \b­-\b (регулярное выражение)?  (Прочитано 874 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Gugas
Новичок
*
Offline Offline

Сообщений: 27


« Стартовое сообщение: 26 Февраль 2017, 20:20 »

В заголовке не совсем тот знак «-», который нужен, прикладываю образец в файле. Надо удалить разрывы слов таким знаком, почему то \b (граница слова) не работает. Такой вариант использую в Notepad++.

* 1.odt (7.48 Кб - загружено 5 раз.)
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 121


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #1: 26 Февраль 2017, 20:45 »

\b работает, но в LibreOffice оно имеет другое значение: если стоит перед символами, то ищет их в начале слова, а если после символов, то ищет их в конце слова.

Если нужно удалить короткий дефис, скопируйте его и ищите как простой символ (без регулярных выражений)
Записан

rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 121


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #2: 26 Февраль 2017, 21:09 »

А чтобы найти этот символ (мягкий перенос) с помощью птички "регулярные выражения" в окно поиска забейте \u00AD (в середине стоят два нуля, а не буквы "О")
Записан

Gugas
Новичок
*
Offline Offline

Сообщений: 27


« Ответ #3: 26 Февраль 2017, 22:36 »

Спасибо. Частично помогли. Так мне всё равно хочется прилипиться к границе слова. Забыл как делается, чтобы искать также то, что по бокам искомого, но его не заменять.
Вот это как модернизировать, чтобы то, что по бокам, не заменялось?
[а-я]\u00AD[а-я]
Почему [а-я] в связке с \u00AD тоже не ищет?
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 121


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #4: 26 Февраль 2017, 23:13 »

Так мне всё равно хочется прилипиться к границе слова. Забыл как делается, чтобы искать также то, что по бокам искомого, но его не заменять.
Вот это как модернизировать, чтобы то, что по бокам, не заменялось?
[а-я]\u00AD[а-я]
Каждое слово в отдельности понимаю, а фразу целиком нет Непонимающий Вы хотите найти только слова в которых есть мягкий перенос, все буквы заменить на абракадабру, а мягкий перенос оставить на месте Непонимающий Вы привели пример "средствах тибет-­ской медицины" что вы хотите сделать с этой фразой?
Почему [а-я] в связке с \u00AD тоже не ищет?
У меня нормально ищет.
Записан

Gugas
Новичок
*
Offline Offline

Сообщений: 27


« Ответ #5: 26 Февраль 2017, 23:32 »

Цитата:
У меня нормально ищет.
А какая у Вас программа? У меня Openoffice 2.4.2. Сборка от Инфра-Ресурс.
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 121


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #6: 26 Февраль 2017, 23:55 »

А какая у Вас программа? У меня Openoffice 2.4.2. Сборка от Инфра-Ресурс.
У меня LibreOffice 5.0 и 4.7 , Apache OpenOffice 4.1.3. Вообще на форуме принято обсуждать более-менее последние версии. Возможно, что в вашем Openoffice это не работает, но я проверить не могу.
Записан

Gugas
Новичок
*
Offline Offline

Сообщений: 27


« Ответ #7: 27 Февраль 2017, 00:08 »

Спасибо. Открыл в современной версии и [а-я]\u00AD[а-я] может сейчас найти. Осталось решить задачу поиска и замены. Это можно решить регулярным выражением, не помню как это делается, чтобы в [а-я]\u00AD[а-я] экранировалось от замены [а-я].
Записан
mikekaganski
Ветеран
*****
Offline Offline

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


« Ответ #8: 27 Февраль 2017, 08:25 »

На самом деле, мягкий перенос не является разрывом слова, поэтому \b не работает (в этих местах нет границы слова).

Для того, чтобы заменять только мягкие переносы, граничащие с обеих сторон с буквенными символами, используйте такую строку для поиска:
Код:
([[:alpha:]])\u00AD([[:alpha:]])
и такую строку замены:
Код:
$1$2
Но непонятно, для чего это. Ведь если мягкий перенос имеется, например, в области пробелов, он не нужен, также как и рядом с цифрами, так что простая замена его на ничто вполне себе достаточная процедура.
Записан

С уважением,
Михаил Каганский
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 121


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #9: 27 Февраль 2017, 09:50 »

Но непонятно, для чего это. Ведь если мягкий перенос имеется, например, в области пробелов, он не нужен, также как и рядом с цифрами, так что простая замена его на ничто вполне себе достаточная процедура.
Полностью согласен, но mikekaganski, согласитесь, что по этой причине выражение ([[:alpha:]])\u00AD([[:alpha:]]) хоть и правильно, но логически избыточно, оно делает то же самое, что и \u00AD (мягких переносов за пределами слов не должно быть, а если есть, то это ошибка, их всё равно надо удалить)

Если бы надо было удалить мягкие переносы только в кириллических словах, но оставить в словах на латинице, подошло бы такое выражение: ([а-я])\u00AD([а-я]) (но зачем это нужно?)

Gugas если вам нужно удалить не все мягкие переносы, а только отвечающие определённым условиям, то сформулируйте эти условия, а если все, то \u00AD будет достаточно.

Не пишите лишнего кода, будет меньше шансов допустить ошибку. (Золотое правило программиста)
Записан

mikekaganski
Ветеран
*****
Offline Offline

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


« Ответ #10: 27 Февраль 2017, 09:53 »

@rami: абсолютно согласен. Я ни в коем случае не пытался спорить с Вами, просто отвечал непосредственно на сообщение #7 - и тут же постарался подкрепить Ваши слова (ответ #2).
Записан

С уважением,
Михаил Каганский
kompilainenn
Ветеран
*****
Offline Offline

Сообщений: 1 995



« Ответ #11: 27 Февраль 2017, 11:52 »

@rami: абсолютно согласен. Я ни в коем случае не пытался спорить с Вами, просто отвечал непосредственно на сообщение #7 - и тут же постарался подкрепить Ваши слова (ответ #2).
http://rvb.ru/18vek/krylov/01text/vol3/01fables/233.htm
Записан

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
mikekaganski
Ветеран
*****
Offline Offline

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


« Ответ #12: 27 Февраль 2017, 11:53 »

Улыбка
Записан

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

Сообщений: 27


« Ответ #13: 27 Февраль 2017, 12:19 »

Большое спасибо, восстановилось в памяти.

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

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