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

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

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

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice  без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: « 1 2 3 4 »   Вниз
  Печать  
Автор Тема: автоформатирование по содержанию.  (Прочитано 2273 раз)
0 Пользователей и 1 Гость смотрят эту тему.
alpold
Форумчанин
***
Offline Offline

Сообщений: 103


« Ответ #30: 20 Декабрь 2018, 17:33 »

Спасибо обоим Улыбка понял ошибку в своей формуле

ps поправил
Код:
=ISNUMBER(SEARCH("(катаракта)+.* OD"; $Sheet1.$A$2))
эта тож рабочая))какую посоветуете тогда? с какой меньше проблем может возникнуть ?
Записан
Bigor
Опытный пользователь
***
Offline Offline

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


« Ответ #31: 20 Декабрь 2018, 17:41 »

те, которые mikekaganski предложил, они более универсальные
Записан
alpold
Форумчанин
***
Offline Offline

Сообщений: 103


« Ответ #32: 20 Декабрь 2018, 17:42 »

те, которые mikekaganski предложил, они более универсальные
В плане? я в той просто ничего вообще не понимаю))) твоя в принципе понятная
Записан
Bigor
Опытный пользователь
***
Offline Offline

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


« Ответ #33: 20 Декабрь 2018, 17:46 »

если у тебя окажется слово odometr или osnova, т.е. начинающие на OS или OD моя в текущем виде будет врать. У mikekaganski я сам не все понимаю Улыбка но работает правльно
Записан
alpold
Форумчанин
***
Offline Offline

Сообщений: 103


« Ответ #34: 20 Декабрь 2018, 17:46 »

если у тебя окажется слово odometr или osnova, т.е. начинающие на OS или OD моя в текущем виде будет врать. У mikekaganski я сам не все понимаю Улыбка но работает правльно
понял)))
Записан
alpold
Форумчанин
***
Offline Offline

Сообщений: 103


« Ответ #35: 20 Декабрь 2018, 17:49 »

если у тебя окажется слово odometr или osnova, т.е. начинающие на OS или OD моя в текущем виде будет врать. У mikekaganski я сам не все понимаю Улыбка но работает правльно
можешь посмотреть пост по мультивыбору из выпадающего списка. Я там тебя спрашивал ты не видел нверное.
Записан
mikekaganski
Мастер
*****
Online Online

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


« Ответ #36: 20 Декабрь 2018, 18:51 »

У mikekaganski я сам не все понимаю Улыбка но работает правльно
Улыбка
Код:
катаракта([^s]|((?<!\bo)s)|(s(?!\b)))*\bOD\b

Эта регулярка разбивается на такие части:

катаракта - это просто эти символы в этом порядке в любом месте текста, то есть наша найденная подстрока должна начинаться этим словом.

([^s]|((?<!\bo)s)|(s(?!\b)))* - выражение во внешних скобках - то есть [^s]|((?<!\bo)s)|(s(?!\b)) - повторяется ноль или больше раз (об этом говорит *). Скобки сгруппировали выражения, чтобы звёздочка относилась ко всем им. Это выражение, в свою очередь, делится на три части, разделённые |, что значит, что в каждом случае это может быть одно из трёх:
- [^s] - это любой символ, кроме s.
- (?<!\bo)s - это символ s, только если прямо перед ним нет символа o, начинающего слово. (?<!\bo) - это негативное предусловие, запрещающее последовательность \bo, где \b - признак границы слова.
- s(?!\b) - это символ s, только если он не завершает слово.

Наконец, \bOD\b - это просто символы OD, обрамлённые границами слов. Граница слова - это пробел, точка, начало или конец строки, ... то есть просто не буквенноцифровой символ.

Таким образом, всё выражение можно прочитать так:
"Найти подстроку, начинающуюся со слова катаракта, после которого идёт любое количество любых символов, кроме s, или s, если перед s не стоит o в начале слова, или s, если он не заканчивает слово; завершает искомую последовательность отдельное слово OD".

Этим я обеспечил, что между "катаракта" и "OD" нет отдельного слова "os", что значило бы, что слово "катаракта" на самом деле относилось к левому глазу.
Записан

С уважением,
Михаил Каганский
Bigor
Опытный пользователь
***
Offline Offline

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


« Ответ #37: 20 Декабрь 2018, 19:05 »

позанудствую Улыбка а зачем условие кроме s?
Записан
mikekaganski
Мастер
*****
Online Online

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


« Ответ #38: 20 Декабрь 2018, 19:36 »

Чтобы позволить любые другие буквы. Например, "катаракта зрелая OD".
Записан

С уважением,
Михаил Каганский
Bigor
Опытный пользователь
***
Offline Offline

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


« Ответ #39: 20 Декабрь 2018, 20:21 »

Чтобы позволить любые другие буквы
у меня почему-то и без этого условия работает.
Записан
mikekaganski
Мастер
*****
Online Online

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


« Ответ #40: 20 Декабрь 2018, 20:49 »

у меня почему-то и без этого условия работает.
Я не вполне понимаю, какое именно регулярное выражение работает на какой именно строке.
Записан

С уважением,
Михаил Каганский
Bigor
Опытный пользователь
***
Offline Offline

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


« Ответ #41: 20 Декабрь 2018, 20:52 »

Код:
=ISNUMBER(SEARCH("катаракта((?<!\bo)d)|(d(?!\b))*\bos\b"; $Sheet1.$A$2))

содержимое a2 :
Цитата:
Катаракта fkhk htrhtrhj ооооуауц рр  od рррр  OS

результат истина
 
Записан
mikekaganski
Мастер
*****
Online Online

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


« Ответ #42: 20 Декабрь 2018, 21:00 »

Улыбка А если это же выражение переделать для левого глаза, будет работать (т.е., выдавать ложь)? нет, тоже будет истина. Потому что отсутствуют охватывающие скобки. И звёздчка относится только к (d(?!\b)). И выражение читается "или 'катаракта', после которой сразу идёт d(перед которой нет s), или любое (в т.ч. 0) количество символов d не в конце слова; а после всего этого отдельное слово os". Что это выражение находит? оно находит ноль символов d, за которыми идёт os.
Записан

С уважением,
Михаил Каганский
Bigor
Опытный пользователь
***
Offline Offline

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


« Ответ #43: 20 Декабрь 2018, 21:05 »

блин, и правда скобок не хватает Грустный Вернул веру в логику, а то вроде недолжно, а работает Улыбка
Записан
mikekaganski
Мастер
*****
Online Online

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


« Ответ #44: 20 Декабрь 2018, 21:22 »

@Bigor: Спасибо! этот разбор подсказал мне более простой и прозрачный вариант:

OD:
Код:
катаракта((?<!\bos\b).)*\bOD\b
OS:
Код:
катаракта((?<!\bod\b).)*\bOS\b
Записан

С уважением,
Михаил Каганский
Страниц: « 1 2 3 4 »   Вверх
  Печать  
 
Перейти в:  

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