Модераторы: korob2001, ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопросы новичка, подскажите что не так 
:(
    Опции темы
amg
Дата 25.11.2008, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



ginnie как всегда успел вперед. И верно заметил, что достаточно {4}.
PM MAIL   Вверх
Firer
Дата 25.11.2008, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 3.11.2008
Где: Донецк, Украина

Репутация: нет
Всего: нет



smile 
Всем спасибо, у меня глаза разбегаются.

Только для меня кое-что немного сложновато. Особенно функция в функции

Я по привычке делаю все формально. Мозги вообще пока таким образом не работают.

Добавлено через 9 минут и 31 секунду
Как сделать шаблон для поиска времени по которому будут проходить форматы такого типа как 
  • 12:00am
  • 5:00pm
  • 8:30AM

и чтобі не проходили  3:00, 2:60am, 99:00am, 3:0am


Мой вариант
Код

m/\d[0-12][\s]?\:[\s]?\d[00-59][\s]?(a|p)m/i

формат: число от нуля до 12, потом необязательный пробел, потом ":", необязательный пробел, две цифры от 00 до 59, необязательный пробел, am или pm без учета регистра

Проблема в том, что необ. пробел не учитывается.

Может кто, что подскажет. Буду благодарен

Если напишите свой вариант, сделайте для меня формат, как сделал я
PM MAIL   Вверх
tolkien
Дата 26.11.2008, 03:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 5.4.2008

Репутация: 4
Всего: 4



Этот пример идет у вас для обучения регулярным выражениям? 

Если нет, то к чему такие сложности? Возмите простое рег выражение, а дальше сделайте проверку по конкретным полям как вам нужно.
PM MAIL   Вверх
Itsys
Дата 26.11.2008, 07:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 2
Всего: 34



Регулярка должна быть немного другой:
Код

m/(1[0-2])?([0\s]9)?[\s]?\:[\s]?[0-5][0-9][\s]?(a|p)m/i


Не тестировал....
PM MAIL WWW Skype   Вверх
amg
Дата 26.11.2008, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



Цитата(Firer @  25.11.2008,  17:39 Найти цитируемый пост)
Только для меня кое-что немного сложновато. Особенно функция в функции
Не обязательно воспринимать выраженя с map и grep как функция в функции. Мне, например, проще рассматривать их как конвейер: список пропускается через map/grep/sort, результат (тоже список) поступает следующей map/grep/sort и т.д. Такой подход позволяет делать более краткий и лучше читаемый код, чем с использованием циклов.

Цитата(Firer @  25.11.2008,  17:39 Найти цитируемый пост)
Как сделать шаблон для поиска времени по которому будут проходить форматы такого типа как
Здесь я согласен с tolkien: не нужно, хотя, как правило и можно, впихнуть все в регулярное выражение. Гораздо понятнее
Код
print "Valid date" if /(\d+):(\d+)\s*[ap]m/ && $1<=12 && $2<60;

PM MAIL   Вверх
n4n0bit
Дата 26.11.2008, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 19.6.2008

Репутация: нет
Всего: 1



amg красиво   smile 
PM MAIL WWW Jabber   Вверх
Firer
Дата 26.11.2008, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 3.11.2008
Где: Донецк, Украина

Репутация: нет
Всего: нет



amg, 

 
Код

print "Valid date" if /(\d+):(\d+)\s*[ap]m/ && $1<=12 && $2<60;


smile Здесь все знакомо, но что можно так не додумался

Хотя мне кажется или нет, что 03:0 AM тоже пройдет. и нужно ли здесь ставить \: вместо :
может тогда лучше

Код

print "Valid date" if /(\d+)\:(\d)\d\s*[ap]m/ && $1<=12 && $2<6;



Это сообщение отредактировал(а) Firer - 26.11.2008, 11:02
PM MAIL   Вверх
ginnie
Дата 26.11.2008, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



Код

print "Valid date" if /(\d{1,2}):(\d{2})\s*[ap]m/ && $1<=12 && $2<60;



--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0515 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.