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
Форумы портала PHP.SU :: Версия для печати :: Регулярные выражения. Тренировки teddy
Форумы портала PHP.SU » PHP » Регулярные выражения » Регулярные выражения. Тренировки teddy

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

1. teddy - 17 Августа, 2013 - 19:32:56 - перейти к сообщению
Ребята, вообщем я решил надавить на знания в области регулярок и необходима ваша помощь. Собственно прошу более опытных разработчиков просто писать сюда для меня задачи различного направления по регулярным выражениям. Желательно не от балды а те которые реально встречаются на практике чаще всего Улыбка

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

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

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

П:С при наличии задач просьба других форумчан не писать свои решения чтоб я думал сам...
2. armancho7777777 - 17 Августа, 2013 - 21:05:49 - перейти к сообщению
Напишите аналог функции wordwrap для многобайтовых кодировок с использованием регулярных выражений )
я начинал, но через 2 дня мучений забросил, воспользовавшись решением из Zend FW.
http://forum.php.su/topic.php?fo...35&topic=823
3. EuGen - 17 Августа, 2013 - 21:38:15 - перейти к сообщению
teddy
Напишите регулярное выражение, которое будет находить IP-адрес. Вариации задачи:
0. Написать выражение, которое будет проверять правильность строки по октетам, без учёта предельных значений IPv4
1. Написать выражение, которое будет проверять правильность строки по октетам, с учётом предельных значений IPv4 (т.е. 0-254)
2. Выражение для IPv6 адреса.

Это часто встречается, например, при анализе лог-файлов.
4. teddy - 17 Августа, 2013 - 22:46:31 - перейти к сообщению
armancho7777777
Да уж... )) Я попробую, но когда будет и будет ли вообще адекватное решение - гарантировать не могу, к сожалению Улыбка

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

Спасибо за внимание )
5. Саныч - 17 Августа, 2013 - 23:03:52 - перейти к сообщению
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.
6. teddy - 17 Августа, 2013 - 23:11:32 - перейти к сообщению
Саныч
Я видел эту тему ))) сложная была регулярка Улыбка Мне бы что нибудь по проще... ) Хотя тут запарка скорее всего будет с поиском нужной информации, придется перелопатить разные таблицы цветов, разобраться и потом уже что то писать Улыбка Мне бы просто руку набить на написании шаблонов... Больше заданий - но не очень сложные ) От простого - сложному ) Я конечно учту и это задание, но думаю постараюсь выполнить только если простых заданий больше не будет Улыбка

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

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

Можете страницы какие попарсить.
(Добавление)
Вот кстати, моя шпаргалка по регуляркам - http://ru[dot]wikipedia[dot]org/wiki/Regex
8. teddy - 17 Августа, 2013 - 23:35:06 - перейти к сообщению
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)

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


Саныч
Спасибо за ссылкуУлыбка Так я не браковал ваше задание, просто в данный момент честно говоря главная цель это набить руку на самих шаблонах, а в дальнейшем уже наверное буду решать и более разнообразные задачи с привкусом регулярок Улыбка
9. Саныч - 17 Августа, 2013 - 23:41:56 - перейти к сообщению
teddy, хитрый жук, уже удалил.
Сам понял, что фигню написал, а я поиздеваться уже хотел Улыбка Ну ладно, в другой раз...
10. teddy - 18 Августа, 2013 - 00:45:31 - перейти к сообщению
Саныч
А что, шанс ещё остался )) Я исправился. Но только не пойму один момент и баг ли это.

При попытке задать меньше 4 значений в адресе, например 127.0.0 то строка все равно проходит фильтр. Пробовал через + принудить к вводу каждой части но не вышло. Получилось только первую часть сделать принудительной...
11. LIME - 18 Августа, 2013 - 00:59:46 - перейти к сообщению
. экранируй
скобки не нужны
(Добавление)
/^\d{1,3}(\.d{1,3}){3}$/
12. Саныч - 18 Августа, 2013 - 01:04:03 - перейти к сообщению
teddy, в данный момент регулярка неверная.
0. Смотрите что означает символ точка в регулярках и что нужно сделать.
1. Зачем лишние скобки?..
2. Регулярка намного меньше получается.
13. teddy - 18 Августа, 2013 - 01:05:58 - перейти к сообщению
LIME пишет:
скобки не нужны

Во втором задании понадобились... хотя не знаю насколько это корректно.(Старый пост обновил, добавил решение второй задачи)
(Добавление)
Саныч пишет:
Смотрите что означает символ точка в регулярках и что нужно сделать.
Точка это любой символ, а мне ведь цифры нужны Улыбка
14. DelphinPRO - 18 Августа, 2013 - 01:07:47 - перейти к сообщению
teddy пишет:
/^(\d{1,3}).(\d{1,3}).(\d{1,3}).(\d{1,3})$/

точка в регулярных выражениях - спецсимвол. нужно экранировать, если вы имеете ввиду именно точку.
15. Саныч - 18 Августа, 2013 - 01:08:38 - перейти к сообщению
teddy пишет:
добавил решение второй задачи
Эээ, нет, так не пойдет. Вы же собирались регулярки учить, а полезли в цикл PHP.
Учитывайте допустимые значения в самой регулярке.


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

 

Powered by ExBB FM 1.0 RC1