Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизРегулярные выражения: как проверить вхождение числа в диапазон Найти похожие ветки
← →
bss (2010-06-07 19:18) [0]Нужно описать конструкцию, которая задает возможный диапазон чисел.
Пример:\d{1,5}
- разрешает вводить пятизначное число. Фактически, ограничение - от "0" до "99999". А хотелось бы задавать конкретный диапазон, например, от "45" до "567"
← →
xayam © (2010-06-07 19:26) [1]а чем условный оператор не устраивает?
← →
bss (2010-06-07 19:31) [2]Тем, что мне нужно описать это в терминах регулярных выражений.
← →
Медвежонок Пятачок © (2010-06-07 19:32) [3]Пример: \d{1,5} - разрешает вводить пятизначное число
и стодвадцатипятизначное тоже позволяет
← →
test © (2010-06-07 19:35) [4]Либо выбран не нужный инструмент для задачи, либо задача предполагает что то еще, если это телефонный номер то задача имеет смысл, но почему бы для экономии всего не перевести в integer и не сравнить?
← →
Медвежонок Пятачок © (2010-06-07 19:37) [5]и даже
"мама вымыла раму 12345 раз стоя на подоконнике"
тоже позволяет.
← →
bss (2010-06-07 19:39) [6]
> и стодвадцатипятизначное тоже позволяет
если это серьезный коммент - то нет, не позволяет. Строчка574693
не соответствует регулярному выражению\d{1,5}
Если же ты прекрасно понял о чем идет речь, но решил от нечего делать придираться к формулировке вопроса - спасибо за комент.
← →
Медвежонок Пятачок © (2010-06-07 19:44) [7]if ExecRegExpr("\d{1,5}","12345678944141414124124141241241241241") then ShowMessage("ok");
← →
Медвежонок Пятачок © (2010-06-07 19:45) [8]if ExecRegExpr("\d{1,5}","мама вымыла раму 12345 раз стоя на подоконнике") then ShowMessage("снова сработало");
← →
Медвежонок Пятачок © (2010-06-07 19:48) [9]регулярками это разумеется можно ограничить.
только само выражение будет длиннее паскалевского кода аналогичной алгоритмической проверки
PS красную площадь тоже можно без проблем подмести зубной щеткой.
← →
Leonid Troyanovsky © (2010-06-07 19:49) [10]
> Медвежонок Пятачок © (07.06.10 19:45) [8]
Мама устала.
--
Regards, LVT.
← →
Медвежонок Пятачок © (2010-06-07 19:57) [11]скорее устанет тот кто начнет сочинять выражение по формулировке в вопросе.
← →
bss (2010-06-07 19:59) [12]
> if ExecRegExpr("\d{1,5}","12345678944141414124124141241241241241")
> then ShowMessage("ok");
ты про начало, конец строки? Я пользуюсь DevExpress"овской реализацией, там немного по-другому. Если я правильно тебя понял, то тебе понятнее будет так:^\d{1,5}$
спасибо большое за замечание
← →
Медвежонок Пятачок © (2010-06-07 20:09) [13]ну тогда остается замечание про красную площадь и зубную щетку.
оно в силе.
написать такую регулярку можно, но она будет очень похожа на список всех допустимых вариантов строки.
фактически всех комбинаций.
написать можно, читать трудно. поддерживать при смене условий - просто нереально.
← →
bss (2010-06-07 20:13) [14]думаю, есть способ более оптимальный
← →
Медвежонок Пятачок © (2010-06-07 20:14) [15]конечно есть.
алгоритмический.
← →
bss (2010-06-07 20:46) [16]как же это характерно для данного сайта...
Я же говорю - мне нужно это реализовать на регулярных выражениях. Не стоит мне объяснять, что то, чего я хочу - мне не нужно.
← →
Медвежонок Пятачок © (2010-06-07 20:59) [17]нужно - флаг в руки.
пиши все допустимые комбинации
← →
b z (2010-06-07 21:27) [18]
> А хотелось бы задавать конкретный диапазон, например, от
> "45" до "567"
[1-4][0-9][0-9]|[5][0-5][0-9]|[5][6][0-7]|[1-4]?[4-9][5-9]
? :)
← →
Медвежонок Пятачок © (2010-06-07 21:35) [19]ага щаз
"44" - и уже мимо.
← →
инспектор (2010-06-07 21:37) [20]
> как же это характерно для данного сайта...
Тебя здесь насильно держат или ты других сайтов не знаешь ? Их много, поверь.
А то мало того, что хочешь странного, так еще и наезжаешь, ламер недоделанный.
← →
b z (2010-06-07 22:17) [21]
> "44" - и уже мимо.
Так по условию и должно быть мимо. Однако, да, выражение не до конца верно, но думаю, что автору направление поиска по диапозону понятно.
← →
Медвежонок Пятачок © (2010-06-07 22:25) [22]Так по условию и должно быть мимо
[1-4][0-9]
"44" мимо не по условию, а по приведенному выражению
Однако, да, выражение не до конца верно
Скромняга.
Я бы сказал, что оно от начала и до конца неверно
← →
b z (2010-06-07 22:37) [23]Там выражение совсем другое...
← →
Медвежонок Пятачок © (2010-06-07 22:43) [24]я взял самое начало, для первых двух символов. причем всего один вариант.
и уже мимо.
второй символ должен зависеть от первого. а он сам по себе [0-9]
← →
bss (2010-06-08 15:02) [25]В ЖЖ в течении часа подсказали отличную ссылку:
http://utilitymill.com/utility/Regex_For_Range
Для приведенного в топике примераот "45" до "567"
получилось:\b0*(4[5-9]|[5-9][0-9]|[1-4][0-9]{2}|5[0-5][0-9]|56[0-7])\b
учитывая автоматизм составления - сойдет. Уверен был, что где-то это уже давно разжевано.
← →
test © (2010-06-08 16:59) [26]bss (08.06.10 15:02) [25]
Жадные зеленые человечки ))
В теле страницы нет javascript с кодом решения.
← →
Медвежонок Пятачок © (2010-06-08 17:02) [27]Уверен был, что где-то это уже давно разжевано.
Это точно. Причем прямо в этой ветке. в 13 посте.
написать такую регулярку можно, но она будет очень похожа на список всех допустимых вариантов строки.
← →
bss (2010-06-08 17:53) [28]
> но она будет очень похожа на список всех допустимых вариантов
> строки
я это понял как:
0|1|2|3|4|5|6|7|8|9|10|11|12|13...
и так далее. Что, конечно, бред.
В общем, проблема решена.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.065 c