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 :: Регулярные выражения

 PHP.SU

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


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

> Описание: Помогите, пожалуста, сделать задание
AnaSSStasia
Отправлено: 12 Января, 2015 - 06:43:40
Post Id


Новичок


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


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




Ребят, помогите, пожалуйста с упражнениями. Огорчение Огорчение Огорчение

Упражнение 1
Создайте регулярные выражения для нахождения соответствия следующих видов данных:

Целое число
Набор из букв и цифр (латиница)
Набор из букв и цифр (латиница + кириллица)
Домен (google.com)
Имя пользователя (с ограничением 3-25 символов, которыми могут быть буквы и цифры, первый символ обязательно буква)
Пароль (строчные и прописные латинские буквы, цифры)
Пароль (строчные и прописные латинские буквы, цифры, спецсимволы, минимальная длина - 8 символов)
Дата в формате YYYY-MM-DD
Дата в формате DD/MM/YYYY
Дата в формате DD.MM.YYYY
Время в формате HH:MM:SS
Время в формате HH:MM
URL (http://yandex.ru/)
E-mail (user@maildomain.com)
IPv4 (94.137.192.81)
IPv6 (2001:0:9d38:6abd:c70:2d3c:a176:3398)
Mac-адрес (ec:23:3d:1b:7a:e7)
Российский номер мобильного телефона (+79021234567)
Номер кредитной карты (4048 4323 9889 3301)
ИНН (3808753981 или 380870115601)
Почтовый индекс (664000)
Цена в рублях (2546,10 руб.)
Цена в долларах ($39.99)

Упражнение 2
Имея полное имя файла (например, picture.jpg), получите его расширение (например, jpg)
Имея полное имя файла, проверьте соответствует ли оно: а) архиву, б) аудиофайлу, в) видеофайлу, г) картинке
В произвольном HTML-коде найдите строку, заключенную в теги <title></title>
В произвольном HTML-коде найдите все ссылки в тегах <a> (атрибут href)
В произвольном HTML-коде найдите все ссылки на картинки в тегах <img> (атрибут src)
В произвольном тексте найдите и подсветите с помощью тега <strong> заданную строку
В произвольном тексте найдите определенный набор текстовых смайликов Улыбка, ;), Недовольство, огорчение на соответствующие им картинки <img src="smile.png" alt="Улыбка">, <img src="wink.png" alt=";)">, <img src="sad.png" alt="Недовольство, огорчение">
В заданной строке избавьтесь от случайных повторяющихся пробелов.
 
 Top
Panoptik
Отправлено: 12 Января, 2015 - 11:16:09
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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






-----
Just do it
 
 Top
AnaSSStasia
Отправлено: 12 Января, 2015 - 11:47:21
Post Id


Новичок


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


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





Я читала подобные статьи, все равно не получается многое. Не дается мне программирование, а сделать нужно(
 
 Top
Panoptik
Отправлено: 12 Января, 2015 - 13:09:13
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




а зачем делать если недается?


-----
Just do it
 
 Top
AnaSSStasia
Отправлено: 12 Января, 2015 - 13:10:06
Post Id


Новичок


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


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





Я читала подобные статьи, все равно не получается многое. Не дается мне программирование, а сделать нужно(
 
 Top
Panoptik
Отправлено: 12 Января, 2015 - 13:10:37
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




а зачем делать если недается?


-----
Just do it
 
 Top
AnaSSStasia
Отправлено: 12 Января, 2015 - 13:11:36
Post Id


Новичок


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


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




Учеба требует этого(
 
 Top
Panoptik
Отправлено: 12 Января, 2015 - 13:15:38
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




вы меня конечно поймите правильно. дело в том чтобы решить ваши упражнения знающему человеку нужно будет потратить некоторое время (не 2-5 минут) и оно стоит денег

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

так что увы помогать бесплатно я не буду и думаю остальные тоже


-----
Just do it
 
 Top
AnaSSStasia
Отправлено: 12 Января, 2015 - 13:19:22
Post Id


Новичок


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


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




[quote=Panoptik][/quote], диплом пригодится, но не в областе программирования. Так уж вышло, что ошиблась в выборе специальности, но уже поздно, увы, последний курс остался. Я Вас поняла, спасибо.
 
 Top
GoDr
Отправлено: 14 Января, 2015 - 20:43:59
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


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




Целое число

СМ. is_numeric()

Набор из букв и цифр (латиница)


Набор из букв и цифр (латиница + кириллица)
CODE (htmlphp):
скопировать код в буфер обмена
  1. #[\da-zA-Zа-яА-ЯёЁ]+#


Домен (google.com)

Проще использовать простое сравнение

Имя пользователя (с ограничением 3-25 символов, которыми могут быть буквы и цифры, первый символ обязательно буква)
CODE (htmlphp):
скопировать код в буфер обмена
  1. #^[a-zа-я-А-ЯёЁ]{1}[\da-zа-я-А-ЯёЁ]{2,24}$#


Пароль (строчные и прописные латинские буквы, цифры)


Пароль (строчные и прописные латинские буквы, цифры, спецсимволы, минимальная длина - 8 символов)
CODE (htmlphp):
скопировать код в буфер обмена
  1. #^[\da-zA-Zа-я-А-ЯёЁ!@#\$%\^&\*]{8,}$#


Дата в формате YYYY-MM-DD
CODE (htmlphp):
скопировать код в буфер обмена
  1. #^\d{4}-\d{2}-\d{2}$#

Регуляркой не получится просерить корректность даты. СМ.checkdate()
можно чуть усложнить
CODE (htmlphp):
скопировать код в буфер обмена
  1. #^\d{4}-[01]{1}[0-9]{1}-[0-3]{1}[0-9]{1}$#

ну или как то так
CODE (htmlphp):
скопировать код в буфер обмена
  1. #^\d{4}-(01|02|03|04|05|06|07|08|09|10|11|12)-[0-3]{1}[0-9]{1}$#


Дата в формате DD/MM/YYYY

CODE (htmlphp):
скопировать код в буфер обмена
  1. #^\d{2}\/\d{2}\/\d{4}$#


Дата в формате DD.MM.YYYY
CODE (htmlphp):
скопировать код в буфер обмена
  1. #^[\d]{2}\.[\d]{2}\.[\d]{4}$#


Время в формате HH:MM:SS
CODE (htmlphp):
скопировать код в буфер обмена
  1. #^\d{2}:\d{2}:\d{2}$#

Время тоже не получится проверить на корректность.. Можно конечно, но регулярка будет супер длинной

Время в формате HH:MM


URL (http://yandex.ru/)
CODE (htmlphp):
скопировать код в буфер обмена
  1. #^http:\/\/yandex\.ru\/$#


E-mail (user@maildomain.com)
Вообще-то email в соответсвии со спецификацией может содержать практически любые символы, даже несколько "собак". Но если совсем просто, то можно так


IPv4 (94.137.192.81)
CODE (htmlphp):
скопировать код в буфер обмена
  1. #^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$#


IPv6 (2001:0:9d38:6abd:c70:2d3c:a176:3398)
Не вникал в этот формат ещё, так что классическое выражение
CODE (htmlphp):
скопировать код в буфер обмена
  1. #^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$#


Mac-адрес (ec:23:3d:1b:7a:e7)
CODE (htmlphp):
скопировать код в буфер обмена
  1. #^[\d|a-f]{2}\:[\d|a-f]{2}\:[\d|a-f]{2}\:[\d|a-f]{2}\:[\d|a-f]{2}\:[\d|a-f]{2}$#


Российский номер мобильного телефона (+79021234567)


Номер кредитной карты (4048 4323 9889 3301)
CODE (htmlphp):
скопировать код в буфер обмена
  1. #^\d{4}\s\d{4}\s\d{4}\s\d{4}\s*$#


ИНН (3808753981 или 380870115601)


Почтовый индекс (664000)


Цена в рублях (2546,10 руб.)

CODE (htmlphp):
скопировать код в буфер обмена
  1. #^\d+(,|\.)\d{2}\s*руб\.$#


Цена в долларах ($39.99)

(Добавление)
Хорошая тренировка для мозгов... Правда слишком простые задания в первом задании Радость Хотя бред сивой кобылы!!!!!! Не понимаю преподавателей которые задают изначально нерациональные (а порой даже глупые) решения


-----
Система управления веб-содержимым Lotos CMS
 
 Top
Мелкий Супермодератор
Отправлено: 14 Января, 2015 - 21:11:51
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




GoDr пишет:
Регуляркой не получится просерить корректность даты.

Получится, но регулярка будет большая и обычно нафиг не нужная.
Регулярки-то всегда баланс между сложностью и точностью.
То же самое касается прочих даты, времени и ipv4 (127.0.0.256, например)

GoDr пишет:
Вообще-то email в соответсвии со спецификацией

И даже эта простая регулярка не покрывает многие адреса, допустимые спецификацией. В частности, хост может быть IP-адресом или состоять из одного слова, или просто третьего уровня домены.
А \w не покрывает часть допустимых символов, +, например.
Собственно, простая регулярка для почты - это "#.+@.+#". Только удостовериться, что есть хотя бы один символ @ и справа-слева от него есть хоть что-то. Вот это покроет спецификацию.

GoDr пишет:
Mac-адрес (ec:23:3d:1b:7a:e7)
#^[\d|a-f]{2}\:[\d|a-f]{2}\:[\d|a-f]{2}\:[\d|a-f]{2}\:[\d|a-f]{2}\:[\d|a-f]{2}$#

В символьной маске символ | не имеет специального значения. Эту регулярку пройдёт совсем не MAC-адрес ||:||:||:||:||:||
Ну и чуток сократить: #^(?:[\da-f]{2}\Улыбка{5}[\da-f]{2}$#


-----
PostgreSQL DBA
 
 Top
GoDr
Отправлено: 14 Января, 2015 - 21:44:53
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


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




И задание 2......


Имея полное имя файла (например, picture.jpg), получите его расширение (например, jpg)
PHP:
скопировать код в буфер обмена
  1. $a = "picture.jpg";
  2. preg_match("#\.(.*)$#", $a, $tmp);
  3. echo $tmp[1];


Имея полное имя файла, проверьте соответствует ли оно: а) архиву, б) аудиофайлу, в) видеофайлу, г) картинке

PHP:
скопировать код в буфер обмена
  1. $a = "picture.jpg";
  2. preg_match("#\.(.*)$#", $a, $tmp);
  3.  
  4. $b[0] = array('zip', 'rar', 'arj');
  5. $b[1] = array('mp3', 'wma', 'wav');
  6. $b[2] = array('mkv', 'mp4', 'avi');
  7. $b[3] = array('jpg', 'png', 'gif');
  8.  
  9. $c = array('Архив','Музыка','Фильм','Картинка');
  10.  
  11. foreach($b as $key => $value){
  12.     if(in_array($tmp[1], $value)){
  13.         echo 'Это ' . $c[$key];
  14.         break;
  15.     }
  16. }
  17.  

В произвольном HTML-коде найдите строку, заключенную в теги <title></title>
PHP:
скопировать код в буфер обмена
  1. $a = <<<EOF
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  3. <html>
  4. <head>
  5. <title>Форумы портала PHP.SU :: Регулярные выражения</title>
  6. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
  7. <meta http-equiv="Content-Language" content="ru">
  8. <meta http-equiv="Cache-Control" content="private">
  9. <meta name="description" content="Форумы портала PHP.SU, форум php-программистов">
  10. <meta http-equiv="description" content="Форумы портала PHP.SU, Форум PHP программистов">
  11. <meta name="Keywords" content="PHP, MySQL, JavaScript, форум, мануал, справочник, статьи, примеры">
  12. <meta http-equiv="Keywords" content="PHP, MySQL, JavaScript, форум, мануал, справочник, статьи, примеры">
  13. EOF;
  14.  
  15. preg_match("#<title>(.*)<\/title>#i", $a, $tmp);
  16. echo $tmp[1];


В произвольном HTML-коде найдите все ссылки в тегах <a> (атрибут href)
PHP:
скопировать код в буфер обмена
  1. $a = '<a href="link1.html">link1</a>asdas<a href="link2.html">link2</a>asdas<a href="link3.html">link3</a>asdas<a href="link4.html">link4</a>asdas';
  2. preg_match_all("#<a[^>]+href=(\"|\')([^ >]+)[^>]*(\"|\')>.*?</a>#i", $a, $tmp);
  3. print_r($tmp[2]);


В произвольном HTML-коде найдите все ссылки на картинки в тегах <img> (атрибут src)
PHP:
скопировать код в буфер обмена
  1. $a = '<img src="logo1.png">asdadasdasd<img src="logo2.png">asdadasdasd<img src="logo2.png">asdadasdasd';
  2. preg_match_all("#<img[^>]+src=(\"|\')([^ >]+)[^>]*(\"|\')>#i", $a, $tmp);
  3. print_r($tmp[2]);


В произвольном тексте найдите и подсветите с помощью тега <strong> заданную строку
PHP:
скопировать код в буфер обмена
  1. $a = 'строка строка строка текст строка строка строка строка ';
  2. $b = preg_replace("#(текст)#", '<strong>$1</strong>', $a);
  3. echo $b;


В произвольном тексте найдите определенный набор текстовых смайликов Улыбка, Подмигивание, Недовольство, огорчение на соответствующие им картинки <img src="smile.png" alt="Улыбка">, <img src="wink.png" alt="Подмигивание">, <img src="sad.png" alt="Недовольство, огорчение">
PHP:
скопировать код в буфер обмена
  1. $a   = 'строка :) строка ;) строка :( строка строка строка строка ';
  2. $b[] = array('smile' => ':)', 'img' => '<img src="smile.png" alt="Улыбка">');
  3. $b[] = array('smile' => ';)', 'img' => '<img src="wink.png" alt="Подмигивание">');
  4. $b[] = array('smile' => ':(', 'img' => '<img src="sad.png" alt="Недовольство, огорчение">');
  5.  
  6. foreach($b as $value){
  7.     $a = preg_replace("#\Q".$value['smile']."\E#", $value['img'], $a);
  8. }
  9. echo $a;


В заданной строке избавьтесь от случайных повторяющихся пробелов.
PHP:
скопировать код в буфер обмена
  1. $a = "oijioqw   wqop joqiw  ooiio o       qwiio qwo   l";
  2. $b = preg_replace("#\s{2,}#", " ", $a);
  3. echo $b;

(Добавление)
Ну где-то как-то так Улыбка
может где и опечатывался.. но вроде всё проверял... Хотя вариантов решения может быть сколько угодно
(Добавление)
Цитата:
А \w не покрывает часть допустимых символов, +, например.
Так я написал, самая простая Улыбка В данном случае задача не конкретизирована, в примере указано вообще на латинице ;)

Цитата:
В символьной маске символ | не имеет специального значения.
Малость тормознул Радость
(Добавление)
Вот второе задание уже ближе к реальности.. Хорошая тренировка на рациональные решения Улыбка


-----
Система управления веб-содержимым Lotos CMS
 
 Top
AnaSSStasia
Отправлено: 15 Января, 2015 - 04:21:01
Post Id


Новичок


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


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




Спасибо) уже, правда, сама разобралась, но будет для проверки))
 
 Top
GoDr
Отправлено: 15 Января, 2015 - 09:22:58
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


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




AnaSSStasia пишет:
Спасибо) уже, правда, сама разобралась, но будет для проверки))
Главное дать человеку пару дней подумать, и тогда он сам всё сделает Хорошо Что касается "проверки"... вариантов решения много и это не значит что у меня рациональнее Радость


-----
Система управления веб-содержимым Lotos CMS
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB