Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Простой вопрос по регулярным выражениям


Автор: SABROG 3.6.2008, 15:18
Предположим есть текст:

"123фыадо 23323ффывал0324фывлаоф 2342 2 0 ф фыа"

Хочу составить регулярное выражение, которое сможет:

- определять диапозоны чисел, например найти все числа с диапозоном 10-200 или 500-5000
- все числа целые, положительные, до 33 знаков включительно

Автор: Lazin 3.6.2008, 16:16
Цитата(SABROG @  3.6.2008,  15:18 Найти цитируемый пост)
определять диапозоны чисел, например найти все числа с диапозоном 10-200 или 500-5000

а не проще найти все числа, а потом проверить их диапазон, AFAIK регулярным выражением это сделать нельзя

Цитата(SABROG @  3.6.2008,  15:18 Найти цитируемый пост)
все числа целые, положительные, до 33 знаков включительно

Код

[0-9]{0-33}

Автор: SABROG 3.6.2008, 16:29
А дело в том, что после того как народ узнал, что такое регулярные выражения, возможность их использовать начали пихать в различные поисковые функции, а конечному пользователю остается только две возможности: ввести регулярку и получить результат. На примере Total Commander'a, у меня есть тысячи файлов, где в имени только цифры, но т.к. эти тысячи за несколько лет, то мне нужны только некоторые диапозоны. Естественно я не смогу на коленке написать плагин для тотала, да и эти регулярки используются и в SQL запросах, там тоже особо не посравниваешь без промежуточных таблиц.

Насчет невозможности проверить. Вот пример проверки диапозона значения для IP адреса:

Код

^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$


Но чет я никак не могу разобраться как выцепить нужную мне часть.
---
Кажись разобрался, сделать можно, но писать надо много smile http://regexlib.com

Вот взял пример проверки диапазона портов 1024-49151:

Код

^(4915[0-1]|491[0-4]\d|490\d\d|4[0-8]\d{3}|[1-3]\d{4}|[2-9]\d{3}|1[1-9]\d{2}|10[3-9]\d|102[4-9])$

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)