![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Kuznec |
|
|||
В поиске Профиль Группа: Участник Сообщений: 43 Регистрация: 13.4.2007 Где: КМА Репутация: нет Всего: нет |
Есть задача проверять год Зимних Олимпийских игр начиная с 2000 года и по текущий + 4 года вперёд. Т.е. выражение должно пропускать только 2002, 2006, 2010 и 2014 года. Есть ли возможность делать такую проверку с помощью регулярного выражения?
|
|||
|
||||
AVA12 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 4.5.2008 Репутация: 0 Всего: 4 |
/2002|2006|2010|2014/ |
|||
|
||||
Kuznec |
|
|||
В поиске Профиль Группа: Участник Сообщений: 43 Регистрация: 13.4.2007 Где: КМА Репутация: нет Всего: нет |
Не, это не годится, это для примера использовалась начальная дата 2000, а если брать ранние, то выражение ещё растянется. Почитал ещё раз регулярные выражения, так сказать, освежить данные, видимо циклы там всё-таки не предусмотрены. Надо что-то своё придумывать универсальное для фильтрации данных. |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Это сообщение отредактировал(а) ksnk - 27.10.2013, 22:52 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
имхо не для регулярки задача.
|
|||
|
||||
ksnk |
|
||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
baldina,
для такой постановки - вполне для регулярки. Хотя у меня, как оказалось - летние олимпийские игры :( зимние вот так:
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
||||
|
|||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
||||
|
||||
Kuznec |
|
|||
В поиске Профиль Группа: Участник Сообщений: 43 Регистрация: 13.4.2007 Где: КМА Репутация: нет Всего: нет |
В общем-то, смысл то понятен вашего выражения, но, в таком случае, оно пропустит дату 2022, а требуется проверка до 2013+4 = 2017, т.е. только 2014 год пропускать. Но, всё равно спасибо за предложенный вариант - не ожидал, что так можно. С прошлым веком, видимо, нужно ещё дополнительно дописывать. К сожалению, да. Думал, что есть там какие-нибудь циклы, т.к. этот вопрос на 100% не штудировал. Но, и решение задачи программой (PHP, JS) тоже не подходит, в том смысле, что нужны какие-то универсальные фильтры, записываемые примерно как регулярное выражение. Получается, что для этого необходимо ввести понятие цикла и понятие даты, а также понятие элементарные вычисление (+, -, *, /). |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
не очень понятно что мешает использовать PHP и JS (ввиду ветки "PHP: общие вопросы"). Если это фильтр для запроса к БД, то там это тоже решаемо выражением. В общем уточните как это будет применяться, а народ что-нить посоветует. Добавлено через 52 секунды это как раз лишнее |
|||
|
||||
Kuznec |
|
|||
В поиске Профиль Группа: Участник Сообщений: 43 Регистрация: 13.4.2007 Где: КМА Репутация: нет Всего: нет |
Основная задача выглядит следующим образом. Формируются объекты. Объектами могут выступать обычные страницы сайта (к примеру), человек, дом, школа и бесконечное множество реальных объектов. У каждого объекта, соответственно, есть свои свойства. Каждый объект имеет свой шаблон. И в этом шаблоне необходимо прописать фильтры. Если за объект взять Олимпийские игры, то в качестве свойства может выступать название города, где они проводились, год и т.д. Соответственно, необходимо правильно вписывать года, к примеру. Но, фильтр формировать должен не программист, а обычный пользователь, знающий, так сказать. Прогу пихать точно не айс, выражение должно храниться в БД в виде строки. Пока пытаюсь данную задачу решить в виде регулярных выражений с добавлениями. Т.е. нужно будет спрограммить функцию, которая будет обрабатывать расширенное "регулярное выражение". Были мысли применения и программ, но это крайний случай, если не получится вариант обычной строки. Возможно... |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
это не задача, а попытка решения какой-то задачи, некое проектное решение. но допустим. решение наделить объекты свойствами, из которых вытекает поведение объектов - это перекладывание из одного места в другое: налицо желание оградить кого-то или чего-то от программирования, оставив возможность программирования. если объекты не классифицированы на типы, и эти типы не снабжены алгоритмами поведения на исходном языке, то такая попытка приводит в итоге к (неосознанному) созданию языка программирования. пользователю системы, у которого есть лишь средства задания статических данных, хранящихся в БД, достается трудно понимаемый и управляемый способ. например, таким способом трудно задавать ограничения на свойства, связанные с другими свойствами. скажем, если Олимпийские игры должны в качестве атрибутов иметь страну и город, как обеспечить согласованность страны и города? итого: если отказываться от классификации объектов, проще и логичнее иметь возможность добавлять не только статичные свойства, но и код. попытка привлечь регулярные выражения - шаг естественный, но этот способ не сможет решить любую задачу. Добавлено через 4 минуты и 54 секунды это немного похоже на изобретение шаблонизатора на php: если кто-то готов изучить богатый синтаксис шаблонизатора, ему и php изучить не сложно. а php сам себе вполне шаблонизатор. так что если есть смысл что-то создавать, то это будет специализированная библиотека. Добавлено через 6 минут и 52 секунды конечно, может быть желание создать предметно-ориентированный язык, но это требует совсем иных подходов и затрат. Добавлено через 11 минут и 8 секунд что именно предлагаю в данном случае: создайте предопределенные типы объектов или хотя бы полей. поле типа "регулярное выражение". поля типа "страна", "город", "олимпийский год". в более общем виде - поле типа "ссылка на значение справочника": таким справочником может быть таблица со списком олимпийских лет, городов и т.д. |
|||
|
||||
Kuznec |
|
|||
В поиске Профиль Группа: Участник Сообщений: 43 Регистрация: 13.4.2007 Где: КМА Репутация: нет Всего: нет |
Подумал, подумал я, и решил, что будут использоваться заранее созданные настраиваемые фильтры, и по мере необходимости будут дополняться. В общем виде, для года настройки будут выглядеть так:
начало периода (смещение), конец периода (смещение), шаг начало и конец периода может быть фиксированная дата, либо задаваться от текущей с использованием смещения. Т.е. в нашем случае начало периода 2002 (фиксированное число), конец периода текущая дата + смещение +4, и шаг 4. В таком случае, данный фильтр будет человеку понятен и не нужно изучать регулярки и т.д., и никакого программирования в виде завуалированного кода. Только задача усложняется тем, что все эти фильтры и настройки должны именть однотипную структуру для организованного хранения над чем и нужно подумать теперь. Получается, что-то типа этого. |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |