Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Регулярные выражения. Тренировки teddy

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (3): [1] 2 3 »   

> Без описания
teddy
Отправлено: 17 Августа, 2013 - 19:32:56
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




Ребята, вообщем я решил надавить на знания в области регулярок и необходима ваша помощь. Собственно прошу более опытных разработчиков просто писать сюда для меня задачи различного направления по регулярным выражениям. Желательно не от балды а те которые реально встречаются на практике чаще всего Улыбка

Сложность: от простого к сложному. Не важно матч или реплейс, любые.

Начнем с простых а потом уже на более сложные перейдем. По мере возможности буду выкладывать сюда свои решения и если будет ступор, наверное буду спрашивать вас Улыбка

Если найдутся те кто захочет поучаствовать в моем марафоне - буду только рад Улыбка

П:С при наличии задач просьба других форумчан не писать свои решения чтоб я думал сам...

(Отредактировано автором: 17 Августа, 2013 - 19:38:47)

 
 Top
armancho7777777 Супермодератор
Отправлено: 17 Августа, 2013 - 21:05:49
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Напишите аналог функции wordwrap для многобайтовых кодировок с использованием регулярных выражений )
я начинал, но через 2 дня мучений забросил, воспользовавшись решением из Zend FW.
http://forum.php.su/topic.php?fo...35&topic=823
 
 Top
EuGen Администратор
Отправлено: 17 Августа, 2013 - 21:38:15
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




teddy
Напишите регулярное выражение, которое будет находить IP-адрес. Вариации задачи:
0. Написать выражение, которое будет проверять правильность строки по октетам, без учёта предельных значений IPv4
1. Написать выражение, которое будет проверять правильность строки по октетам, с учётом предельных значений IPv4 (т.е. 0-254)
2. Выражение для IPv6 адреса.

Это часто встречается, например, при анализе лог-файлов.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
teddy
Отправлено: 17 Августа, 2013 - 22:46:31
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




armancho7777777
Да уж... )) Я попробую, но когда будет и будет ли вообще адекватное решение - гарантировать не могу, к сожалению Улыбка

EuGen
Постараюсь до завтра все варианты предоставить.

Спасибо за внимание )
 
 Top
Саныч
Отправлено: 17 Августа, 2013 - 23:03:52
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




teddy, подкину вам еще одно задание. Недавно на форуме была такая тема, я там заморочился с регуляркой. Но вы не подсматривайте! Улыбка

Задача: есть строка, в ней задан CSS цвет в любом возможном формате.
Цвет может задаваться следущими форматами:
1. HEX, 3 или 6 цифр, примеры: #f00, #abcd12
2. RGB, пример: rgb(123, 0, 44). Цифры естественно в пределе 0 - 255
3. RGBA, пример: rgba(123, 0, 44, .8). См. пункт 2, плюс четвертое значение в пределах 0 - 1, причем нуля может и не быть
4. HSL, пример: hsl(300, 50%, 0%). Первое значение в пределах 0 - 359, второе и третье - 0 - 100%
5. HSLA, пример: hsla(300, 50%, 0%, 0.45). См. пункт 4, четвертый параметр аналогично RGBA.
6. Просто название цвета, одно из: transparent, white, silver, gray, black, maroon, red, orange, yellow, olive, lime, green, aqua, blue, navy, teal, fuchsia, purple.

(Отредактировано автором: 17 Августа, 2013 - 23:04:18)



-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
teddy
Отправлено: 17 Августа, 2013 - 23:11:32
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




Саныч
Я видел эту тему ))) сложная была регулярка Улыбка Мне бы что нибудь по проще... ) Хотя тут запарка скорее всего будет с поиском нужной информации, придется перелопатить разные таблицы цветов, разобраться и потом уже что то писать Улыбка Мне бы просто руку набить на написании шаблонов... Больше заданий - но не очень сложные ) От простого - сложному ) Я конечно учту и это задание, но думаю постараюсь выполнить только если простых заданий больше не будет Улыбка

Цель данного топика - получать различные не сложные задания или средней сложности просто для того что бы набить руку для составления шаблонов регулярных варежний )

(Отредактировано автором: 17 Августа, 2013 - 23:17:09)

 
 Top
Саныч
Отправлено: 17 Августа, 2013 - 23:25:11
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




teddy, на самом деле ничего сложного. Объемная, да, но не сложная.
На самом деле здесь 6 (по количеству частей) регулярок объединенных через или...
Вобщем смотрите сами, мое дело предложить. По цветам вся инфа - http://htmlbook[dot]ru/css/value/color

Даже не знаю, что еще предложить. IP уже задали.
Ну можете банально написать регулярку для проверки URI или e-mail адресса. Ну только не просто так символ-собака-символ-точка-символ, а с учетом допустимых символов, длин, региональные домены и т.д. и т.п.

Можете страницы какие попарсить.
(Добавление)
Вот кстати, моя шпаргалка по регуляркам - http://ru[dot]wikipedia[dot]org/wiki/Regex


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
teddy
Отправлено: 17 Августа, 2013 - 23:35:06
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




EuGen пишет:
0. Написать выражение, которое будет проверять правильность строки по октетам, без учёта предельных значений IPv4


PHP:
скопировать код в буфер обмена
  1.  
  2. $ip = "127.0.0.1";
  3.  
  4. if(!preg_match("/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/", $ip, $matches)) {
  5.     echo "Нет";
  6. }else{
  7.     echo "Да";
  8. }
  9. echo "<pre>";
  10. print_r($matches);
  11. echo "</pre>";
  12.  

Output:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. Array
  3. (
  4.     [0] => 127.0.0.1
  5.     [1] => 127
  6.     [2] => 0
  7.     [3] => 0
  8.     [4] => 1
  9. )
  10.  

EuGen пишет:
1. Написать выражение, которое будет проверять правильность строки по октетам, с учётом предельных значений IPv4 (т.е. 0-254)

Спойлер (Отобразить)


Саныч
Спасибо за ссылкуУлыбка Так я не браковал ваше задание, просто в данный момент честно говоря главная цель это набить руку на самих шаблонах, а в дальнейшем уже наверное буду решать и более разнообразные задачи с привкусом регулярок Улыбка

(Отредактировано автором: 18 Августа, 2013 - 01:28:52)

 
 Top
Саныч
Отправлено: 17 Августа, 2013 - 23:41:56
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




teddy, хитрый жук, уже удалил.
Сам понял, что фигню написал, а я поиздеваться уже хотел Улыбка Ну ладно, в другой раз...

(Отредактировано автором: 17 Августа, 2013 - 23:42:32)



-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
teddy
Отправлено: 18 Августа, 2013 - 00:45:31
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




Саныч
А что, шанс ещё остался )) Я исправился. Но только не пойму один момент и баг ли это.

При попытке задать меньше 4 значений в адресе, например 127.0.0 то строка все равно проходит фильтр. Пробовал через + принудить к вводу каждой части но не вышло. Получилось только первую часть сделать принудительной...

(Отредактировано автором: 18 Августа, 2013 - 00:46:28)

 
 Top
LIME
Отправлено: 18 Августа, 2013 - 00:59:46
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




. экранируй
скобки не нужны
(Добавление)
/^\d{1,3}(\.d{1,3}){3}$/
 
 Top
Саныч
Отправлено: 18 Августа, 2013 - 01:04:03
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




teddy, в данный момент регулярка неверная.
0. Смотрите что означает символ точка в регулярках и что нужно сделать.
1. Зачем лишние скобки?..
2. Регулярка намного меньше получается.


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
teddy
Отправлено: 18 Августа, 2013 - 01:05:58
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




LIME пишет:
скобки не нужны

Во втором задании понадобились... хотя не знаю насколько это корректно.(Старый пост обновил, добавил решение второй задачи)
(Добавление)
Саныч пишет:
Смотрите что означает символ точка в регулярках и что нужно сделать.
Точка это любой символ, а мне ведь цифры нужны Улыбка
 
 Top
DelphinPRO
Отправлено: 18 Августа, 2013 - 01:07:47
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




teddy пишет:
/^(\d{1,3}).(\d{1,3}).(\d{1,3}).(\d{1,3})$/

точка в регулярных выражениях - спецсимвол. нужно экранировать, если вы имеете ввиду именно точку.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Саныч
Отправлено: 18 Августа, 2013 - 01:08:38
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




teddy пишет:
добавил решение второй задачи
Эээ, нет, так не пойдет. Вы же собирались регулярки учить, а полезли в цикл PHP.
Учитывайте допустимые значения в самой регулярке.


Мой ответ к первой задаче:

(Отредактировано автором: 18 Августа, 2013 - 01:26:56)



-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB