Чем заменить \b­-\b (регулярное выражение)?

Автор Gugas, 26 февраля 2017, 20:20

0 Пользователи и 1 гость просматривают эту тему.

Gugas

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

rami

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

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

rami

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

Gugas

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

rami

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

Gugas

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

rami

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

Gugas

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

mikekaganski

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

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

rami

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

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

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

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

mikekaganski

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

kompilainenn

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

mikekaganski

С уважением,
Михаил Каганский

Gugas

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

Цитироватьсформулируйте эти условия, а если все, то \u00AD будет достаточно.
Были сомнения в голове, что этого не достаточно. Возможно потому что у Вас более умные головы и Вам видней  ;D.