|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
10.06.2019, 00:03 | #1 |
Форумчанин
Регистрация: 26.07.2013
Сообщений: 134
|
Найти число в промежутке от 0 до 20
Уважаемые форумчане,
Пожалуйста, подскажите как найти число в промежутке от 0 до 20 (поиск по всему документу)? Условие нахождения - точное совпадение. К примеру в тексте присутствует - "остаток до запланированного визита 15 дней, следующий визит через 183 дня". Здесь небходимо найти точное совпадение от 0 до 20, т.е. число 15 из текста "15 дней", но не 183, потому как сочетание чисел 18 (попадающие под условие) здесь тоже присутствует. Спасибо. |
10.06.2019, 10:09 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Очень специфичная задача.
Имхо, это можно сделать только программно (например, макросом на VBA) суть алгоритма такая - выделяете все числа из теста, потом анализируйте - подходит или нет. Надо решить 1) что делать с найденными результатами поиска 2) что делать, если число является частью слова или дробное (например, каб.12 или 19.17 подходит)? |
10.06.2019, 11:47 | #3 |
Форумчанин
Регистрация: 29.09.2008
Сообщений: 378
|
Если обычным поиском, то в несколько проходов.
1. Открываем поиск и активируем флаг "Подстановочные знаки". 2. Ищем числа от 0 до 9. Найти: <[0-9]> 3. Ищем числа от 10 до 19. Найти: <1[0-9]> 4. Ищем число 20: <20> Если макросами, то через RegExp. Конечно, надо учитывать контекст (текст, где ищем). Возможно, как сказал Serge_Bliznykov, придется дать точное определение отдельно стоящего числа, если вас не устраивают находки типа: 10.10.2000 (10) +10 и т. д.
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
|
10.06.2019, 19:36 | #4 | |
Форумчанин
Регистрация: 26.07.2013
Сообщений: 134
|
Цитата:
2) указанные примеры не подходят. Точки или запятые или какие-либо другие знаки ни перед числом ни после не должны быть. Но нужен пример, макроса. Не силен в VBA ворда Последний раз редактировалось ac1-caesar; 10.06.2019 в 22:44. |
|
10.06.2019, 19:47 | #5 |
Форумчанин
Регистрация: 26.07.2013
Сообщений: 134
|
Да, обычным поиском, но найти именно числа в заданном промежутке.
Последний раз редактировалось ac1-caesar; 10.06.2019 в 20:01. |
10.06.2019, 20:19 | #6 |
Форумчанин
Регистрация: 26.07.2013
Сообщений: 134
|
|
10.06.2019, 21:08 | #7 |
Форумчанин
Регистрация: 26.07.2013
Сообщений: 134
|
Использую такую конструкцию для нахождения любого числа длительностью в 10 знаков - " [0-9]{1;10} " либо указав пробелы явно "([ ^s]{1;})([0-9]{1;10})([ ^s]{1;})".
Минус в том, что не всегда пробел до и после числа. Но как найти число в заданном промежутке, пока вопрос. Возможно макрос решит данную ситуацию, но очень слабо владею синтаксисом VBA в ворде. Последний раз редактировалось ac1-caesar; 10.06.2019 в 21:20. |
10.06.2019, 23:24 | #8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
|
11.06.2019, 09:12 | #9 |
Форумчанин
Регистрация: 26.07.2013
Сообщений: 134
|
По сути, чтобы определить какой набор чисел мы должны считать искомым числом, то конечно его должны разрывать пробелы с обеих сторон. Однако есть и такие случаи, когда предложение начинается с этого числа, т.е. перед ним нет пробела. И бывает, что число заканчивает предложение, т.е. после числа точка или продолжает запятой.
В принципе можно вычислить закономерность окончания набора чисел - либо пробел, либо любой знак плюс пробел. Закономерность начала числа наверное сложнее - понятно, что это пробел и непонятно какой еще знак. |
11.06.2019, 09:32 | #10 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[РЕШЕНО] Prolog: Вычислить значеник функции y=x^2+6*x-5 в промежутке от N до 2*N с шагом 2 . N - натуральное число, вводимое с клавиатуры | AnnaSub | Помощь студентам | 2 | 22.05.2019 10:52 |
На заданном числовом промежутке требуется найти все числа, являющиеся парой близнецов | ZigaBr0 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 29.08.2016 15:41 |
На заданном числовом промежутке требуется найти все квадратные числа с убывающими слева направо цифрами / Pascal ABC | Veronika_13 | Помощь студентам | 22 | 04.07.2014 22:27 |
Pascal.Найти в промежутке от a до b число, с максимальной суммой делителей. | I3ECJI0 | Помощь студентам | 2 | 16.05.2012 15:39 |