🗊Презентация Регулярные выражения. Лекция 7

Нажмите для полного просмотра!
Регулярные выражения. Лекция 7, слайд №1Регулярные выражения. Лекция 7, слайд №2Регулярные выражения. Лекция 7, слайд №3Регулярные выражения. Лекция 7, слайд №4Регулярные выражения. Лекция 7, слайд №5Регулярные выражения. Лекция 7, слайд №6Регулярные выражения. Лекция 7, слайд №7Регулярные выражения. Лекция 7, слайд №8Регулярные выражения. Лекция 7, слайд №9Регулярные выражения. Лекция 7, слайд №10Регулярные выражения. Лекция 7, слайд №11Регулярные выражения. Лекция 7, слайд №12Регулярные выражения. Лекция 7, слайд №13Регулярные выражения. Лекция 7, слайд №14Регулярные выражения. Лекция 7, слайд №15Регулярные выражения. Лекция 7, слайд №16Регулярные выражения. Лекция 7, слайд №17Регулярные выражения. Лекция 7, слайд №18Регулярные выражения. Лекция 7, слайд №19Регулярные выражения. Лекция 7, слайд №20Регулярные выражения. Лекция 7, слайд №21Регулярные выражения. Лекция 7, слайд №22Регулярные выражения. Лекция 7, слайд №23Регулярные выражения. Лекция 7, слайд №24Регулярные выражения. Лекция 7, слайд №25Регулярные выражения. Лекция 7, слайд №26Регулярные выражения. Лекция 7, слайд №27Регулярные выражения. Лекция 7, слайд №28Регулярные выражения. Лекция 7, слайд №29Регулярные выражения. Лекция 7, слайд №30Регулярные выражения. Лекция 7, слайд №31Регулярные выражения. Лекция 7, слайд №32Регулярные выражения. Лекция 7, слайд №33Регулярные выражения. Лекция 7, слайд №34Регулярные выражения. Лекция 7, слайд №35Регулярные выражения. Лекция 7, слайд №36Регулярные выражения. Лекция 7, слайд №37Регулярные выражения. Лекция 7, слайд №38Регулярные выражения. Лекция 7, слайд №39

Содержание

Вы можете ознакомиться и скачать презентацию на тему Регулярные выражения. Лекция 7. Доклад-сообщение содержит 39 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Лекция 7
Регулярные выражения
Описание слайда:
Лекция 7 Регулярные выражения

Слайд 2





Определение
Регулярные выражения (англ. «regular expressions», жарг. «регэкспы» или «регексы») — современная система поиска текстовых фрагментов в электронных документах, основанная на специальной системе записи образцов для поиска.
Образец (англ. «pattern»), задающий правило поиска, по-русски также иногда называют «шаблоном», «маской», или на английский манер «паттерном».
Описание слайда:
Определение Регулярные выражения (англ. «regular expressions», жарг. «регэкспы» или «регексы») — современная система поиска текстовых фрагментов в электронных документах, основанная на специальной системе записи образцов для поиска. Образец (англ. «pattern»), задающий правило поиска, по-русски также иногда называют «шаблоном», «маской», или на английский манер «паттерном».

Слайд 3





Предназначение
Регулярные выражения используются некоторыми текстовыми редакторами и утилитами для поиска и подстановки текста. Например, при помощи регулярных выражений можно задать шаблоны, позволяющие:
найти все последовательности символов «кот» в любом контексте, как то: «кот», «котлета», «терракотовый»;
найти отдельно стоящее слово «кот» и заменить его на «кошка»;
найти слово «кот», которому предшествует слово «персидский» или «чеширский»;
убрать из текста все предложения, в которых упоминается слово кот или кошка.
Описание слайда:
Предназначение Регулярные выражения используются некоторыми текстовыми редакторами и утилитами для поиска и подстановки текста. Например, при помощи регулярных выражений можно задать шаблоны, позволяющие: найти все последовательности символов «кот» в любом контексте, как то: «кот», «котлета», «терракотовый»; найти отдельно стоящее слово «кот» и заменить его на «кошка»; найти слово «кот», которому предшествует слово «персидский» или «чеширский»; убрать из текста все предложения, в которых упоминается слово кот или кошка.

Слайд 4





Распространённость
Регулярные выражения (regex) являются важной составной частью текстовых редакторов, инструментов поиска и большинства основных языков программирования, которые поддерживают регулярные выражения для работы со строками.
Описание слайда:
Распространённость Регулярные выражения (regex) являются важной составной частью текстовых редакторов, инструментов поиска и большинства основных языков программирования, которые поддерживают регулярные выражения для работы со строками.

Слайд 5





Виды регулярных выражений
POSIX (BRE, ERE)
PCRE = Perl-Compatible Regular Expressions
Описание слайда:
Виды регулярных выражений POSIX (BRE, ERE) PCRE = Perl-Compatible Regular Expressions

Слайд 6





Из чего состоят регэкспы
1. Символы
обычные
специальные (метасимволы)
2. Операции
квантификация
перечисление
группировка
Описание слайда:
Из чего состоят регэкспы 1. Символы обычные специальные (метасимволы) 2. Операции квантификация перечисление группировка

Слайд 7





Разделители
Разделителем может быть любой символ не являющийся буквой, цифрой, обратной косой чертой или каким-либо пробельным символом.
Часто используемыми разделителями являются косые черты (/), знаки решетки (#) и тильды (~).
Примеры:
/foo bar/
#^[^0-9]$#
+php+
%[a-zA-Z0-9_-]%
Описание слайда:
Разделители Разделителем может быть любой символ не являющийся буквой, цифрой, обратной косой чертой или каким-либо пробельным символом. Часто используемыми разделителями являются косые черты (/), знаки решетки (#) и тильды (~). Примеры: /foo bar/ #^[^0-9]$# +php+ %[a-zA-Z0-9_-]%

Слайд 8





PHP-синтаксис
$pattern = “/^foo/”;
int preg_match ( string $pattern, string $subject [, array &$matches ] )
Выполняет проверку на соответствие строки $subject регулярному выражению $pattern и записывает результаты поиска в массив $matches.
Возвращает количество найденных соответствий (в данном случае 0, если не найдены совпадения или 1), если поиск завершился успешно, и false, если возникли ошибки
Описание слайда:
PHP-синтаксис $pattern = “/^foo/”; int preg_match ( string $pattern, string $subject [, array &$matches ] ) Выполняет проверку на соответствие строки $subject регулярному выражению $pattern и записывает результаты поиска в массив $matches. Возвращает количество найденных соответствий (в данном случае 0, если не найдены совпадения или 1), если поиск завершился успешно, и false, если возникли ошибки

Слайд 9





PHP-синтаксис
$myRegexp = “/^foo/”;
int preg_match_all ( string $pattern, string $subject [, array &$matches ] )
Выполняет проверку на соответствие строки $subject регулярному выражению $pattern и записывает результаты поиска в массив $matches.
Возвращает количество найденных соответствий (0, если не найдены), если поиск завершился успешно, и false, если возникли ошибки
Описание слайда:
PHP-синтаксис $myRegexp = “/^foo/”; int preg_match_all ( string $pattern, string $subject [, array &$matches ] ) Выполняет проверку на соответствие строки $subject регулярному выражению $pattern и записывает результаты поиска в массив $matches. Возвращает количество найденных соответствий (0, если не найдены), если поиск завершился успешно, и false, если возникли ошибки

Слайд 10





PHP-синтаксис
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
Выполняет поиск совпадений в строке subject с шаблоном pattern и заменяет их на replacement.
Возвращает массив, если параметр subject является массивом, иначе возвращается строка
Описание слайда:
PHP-синтаксис mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] ) Выполняет поиск совпадений в строке subject с шаблоном pattern и заменяет их на replacement. Возвращает массив, если параметр subject является массивом, иначе возвращается строка

Слайд 11





PHP-синтаксис
array preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] )
Разбивает строку по регулярному выражению.
Возвращает массив, состоящий из подстрок заданной строки subject, которая разбита по границам, соответствующим шаблону pattern.
Описание слайда:
PHP-синтаксис array preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] ) Разбивает строку по регулярному выражению. Возвращает массив, состоящий из подстрок заданной строки subject, которая разбита по границам, соответствующим шаблону pattern.

Слайд 12





Метасимволы
Описание слайда:
Метасимволы

Слайд 13





Любой символ
$myRegexp = "/./";
preg_match($myRegexp, 'foo'); // true
preg_match($myRegexp, "\r\n"); // false
Что на самом деле хотели получить?
preg_match("/./s", "\r\n"); // true
Описание слайда:
Любой символ $myRegexp = "/./"; preg_match($myRegexp, 'foo'); // true preg_match($myRegexp, "\r\n"); // false Что на самом деле хотели получить? preg_match("/./s", "\r\n"); // true

Слайд 14





Граница слова
preg_match("/\ba/", 'alabama'); // true
preg_match("/a\b/", 'alabama'); // true
preg_match("/a\b/", 'naïve'); // true
Не-граница слова:
preg_match("/\Ba/", 'alabama'); // true
Описание слайда:
Граница слова preg_match("/\ba/", 'alabama'); // true preg_match("/a\b/", 'alabama'); // true preg_match("/a\b/", 'naïve'); // true Не-граница слова: preg_match("/\Ba/", 'alabama'); // true

Слайд 15





Символьные классы
Описание слайда:
Символьные классы

Слайд 16





Пробельные символы
/\s/ (инвертированный вариант /\S/) 
Следующие специальные символы являются пробельными:
PHP: 
\t \n \v \f \r \u0020
Описание слайда:
Пробельные символы /\s/ (инвертированный вариант /\S/) Следующие специальные символы являются пробельными: PHP: \t \n \v \f \r \u0020

Слайд 17





Буквы и цифры
/\d/ ~ цифры от 0 до 9 
/\w/ ~ буквы, цифры и подчёркивание 
В JS и PHP не работает для русских букв! 
И наоборот: 
/\D/ ~ всё, кроме цифр 
/\W/ ~ всё, кроме букв и цифр
Описание слайда:
Буквы и цифры /\d/ ~ цифры от 0 до 9 /\w/ ~ буквы, цифры и подчёркивание В JS и PHP не работает для русских букв! И наоборот: /\D/ ~ всё, кроме цифр /\W/ ~ всё, кроме букв и цифр

Слайд 18





Произвольные классы символов
Пример: 
/[abc123]/
Работают метасимволы и диапазоны: 
/[A-F\d]/
Можно указать несколько диапазонов: 
/[a-cG-M0-7]/ 
ВАЖНО: диапазоны берутся из Юникода. При работе с кириллическими диапазонами проверьте порядок символов в Юникоде!
Описание слайда:
Произвольные классы символов Пример: /[abc123]/ Работают метасимволы и диапазоны: /[A-F\d]/ Можно указать несколько диапазонов: /[a-cG-M0-7]/ ВАЖНО: диапазоны берутся из Юникода. При работе с кириллическими диапазонами проверьте порядок символов в Юникоде!

Слайд 19





Произвольные классы символов
Символ «точка» — просто точка!
preg_match('/[.]/', 'anything'); // false
Cимволы: \ ] - 
/[\\\]-]/
Описание слайда:
Произвольные классы символов Символ «точка» — просто точка! preg_match('/[.]/', 'anything'); // false Cимволы: \ ] - /[\\\]-]/

Слайд 20





Инвертированные символьные классы
Всё, кроме a, b, c: 
/[^abc]/ 
^ как символ: 
/[abc^]/
Описание слайда:
Инвертированные символьные классы Всё, кроме a, b, c: /[^abc]/ ^ как символ: /[abc^]/

Слайд 21





Квантификаторы
Описание слайда:
Квантификаторы

Слайд 22





Ноль или более, один или более
preg_match('/bo*/', 'b'); // true
preg_match('/.*/', '');   // true
preg_match('/bo+/', 'b'); // false
Описание слайда:
Ноль или более, один или более preg_match('/bo*/', 'b'); // true preg_match('/.*/', ''); // true preg_match('/bo+/', 'b'); // false

Слайд 23





Ноль или один
preg_match('/colou?r/', 'color');
preg_match('/colou?r/', 'colour');
Описание слайда:
Ноль или один preg_match('/colou?r/', 'color'); preg_match('/colou?r/', 'colour');

Слайд 24





Диапазоны повторов
/bo{7}/		точно 7 
/bo{2,5}/	от 2 до 5, x < y 
/bo{5,}/		5 или более 
В JS и PHP не работает! 
preg_match('/b{,5}/', 'bbbbb');
Описание слайда:
Диапазоны повторов /bo{7}/ точно 7 /bo{2,5}/ от 2 до 5, x < y /bo{5,}/ 5 или более В JS и PHP не работает! preg_match('/b{,5}/', 'bbbbb');

Слайд 25





Жадные (greedy) квантификаторы
preg_match('/a+/', 'aaaaa', $matches);
print_r($matches);
// Array ( [0] => aaaaa )
Описание слайда:
Жадные (greedy) квантификаторы preg_match('/a+/', 'aaaaa', $matches); print_r($matches); // Array ( [0] => aaaaa )

Слайд 26





Ленивые (lazy) квантификаторы
preg_match('/a+?/', 'aaaaa', $matches);
print_r($matches);
// Array ( [0] => a ) 
preg_match('/a*?/', 'aaaaa', $matches);
print_r($matches);
// Array ( [0] => )
Описание слайда:
Ленивые (lazy) квантификаторы preg_match('/a+?/', 'aaaaa', $matches); print_r($matches); // Array ( [0] => a ) preg_match('/a*?/', 'aaaaa', $matches); print_r($matches); // Array ( [0] => )

Слайд 27





Группировки
С захватом 
preg_match("/(boo)/", "boo", $matches); 
// $matches = {"boo"};
Без захвата 
preg_match("/(?:boo)/", "boo", $matches);
// $matches = {};
Пример
<img alt=“картинка” src=“image.jpg”/>
/<img(?:alt=“(?:.*)”)? src=“(.+)” \/>/i
$matches={‘alt=“картинка”’, ‘картинка’,’image.jpg’};
Описание слайда:
Группировки С захватом preg_match("/(boo)/", "boo", $matches); // $matches = {"boo"}; Без захвата preg_match("/(?:boo)/", "boo", $matches); // $matches = {}; Пример <img alt=“картинка” src=“image.jpg”/> /<img(?:alt=“(?:.*)”)? src=“(.+)” \/>/i $matches={‘alt=“картинка”’, ‘картинка’,’image.jpg’};

Слайд 28





Группировки и получаемый массив
preg_match('/(bo)o+(m)/', 'the booooom', $matches);
print_r($matches);
// Array ( [0] => booooom [1] => bo [2] => m )
Описание слайда:
Группировки и получаемый массив preg_match('/(bo)o+(m)/', 'the booooom', $matches); print_r($matches); // Array ( [0] => booooom [1] => bo [2] => m )

Слайд 29





Порядок нумерации группировок
/((foo) (b(a)r))/
Описание слайда:
Порядок нумерации группировок /((foo) (b(a)r))/

Слайд 30





Порядок нумерации группировок
/((foo) (b(a)r))/
/(             )/ // $matches[0] = foo bar
/ (foo)         / // $matches[1] = foo
/       (     ) / // $matches[2] = bar
/         (a)   / // $matches[3] = a
Описание слайда:
Порядок нумерации группировок /((foo) (b(a)r))/ /( )/ // $matches[0] = foo bar / (foo) / // $matches[1] = foo / ( ) / // $matches[2] = bar / (a) / // $matches[3] = a

Слайд 31





Перечисление
/red|green|blue light/ 
/(red|green|blue) light/ 
preg_match("/a(;|$)/", 'var a'); // true
Описание слайда:
Перечисление /red|green|blue light/ /(red|green|blue) light/ preg_match("/a(;|$)/", 'var a'); // true

Слайд 32





Backreferences (обратные ссылки)
preg_match("/(red|green) apple is \1/", 'red apple is red'); // true
preg_match("/(red|green) apple is \1/", 'green apple is green'); // true
preg_match("/(red|green) apple is \1/", 'green apple is red'); // false
Описание слайда:
Backreferences (обратные ссылки) preg_match("/(red|green) apple is \1/", 'red apple is red'); // true preg_match("/(red|green) apple is \1/", 'green apple is green'); // true preg_match("/(red|green) apple is \1/", 'green apple is red'); // false

Слайд 33





Представление символов
\x09 === \t (не Unicode, для ASCII/ANSI)
\u20AC === € (для Unicode)
Обратный slash убирает специальное значение у символа
preg_match('/\(\)/', '()');  // true
preg_match('/\\n/,   '\\n'); // true
Иногда верно и обратное
preg_match('/\f/', 'f') // false!
Описание слайда:
Представление символов \x09 === \t (не Unicode, для ASCII/ANSI) \u20AC === € (для Unicode) Обратный slash убирает специальное значение у символа preg_match('/\(\)/', '()'); // true preg_match('/\\n/, '\\n'); // true Иногда верно и обратное preg_match('/\f/', 'f') // false!

Слайд 34





Флаги (модификаторы) в регулярных выражениях
i m s u
global match 
ignore case 
multiline matching for ^ and $ 
utf-8 (не совместим с PCRE, есть только в PHP)
string as single line 
Пример:
preg_match('/hello/i', 'HeLlO');  // true
Описание слайда:
Флаги (модификаторы) в регулярных выражениях i m s u global match ignore case multiline matching for ^ and $ utf-8 (не совместим с PCRE, есть только в PHP) string as single line Пример: preg_match('/hello/i', 'HeLlO'); // true

Слайд 35





Regexp Injection
$userInput = '[abc]';
// ПЛОХО
preg_match($pattern, $userInput);
// ХОРОШО
preg_match($pattern, preg_quote($userInput));
Описание слайда:
Regexp Injection $userInput = '[abc]'; // ПЛОХО preg_match($pattern, $userInput); // ХОРОШО preg_match($pattern, preg_quote($userInput));

Слайд 36





Regexp Injection
string preg_quote ( string $str )
Функция preg_quote() принимает строку str и добавляет обратный слэш перед каждым служебным символом. Это бывает полезно, если в составлении шаблона участвуют строковые переменные, значение которых в процессе работы скрипта может меняться. 
В регулярных выражениях служебными считаются следующие символы: . \ + * ? [ ^ ] $ ( ) { } = ! < > | : -
Описание слайда:
Regexp Injection string preg_quote ( string $str ) Функция preg_quote() принимает строку str и добавляет обратный слэш перед каждым служебным символом. Это бывает полезно, если в составлении шаблона участвуют строковые переменные, значение которых в процессе работы скрипта может меняться. В регулярных выражениях служебными считаются следующие символы: . \ + * ? [ ^ ] $ ( ) { } = ! < > | : -

Слайд 37





Ссылки
http://pcre.ru - регулярные выражения, примеры, документация, шаблоны.
http://tech.yandex.ru/education/shri/simf-2013/talks/712/ - Максим Ширшин, Регулярные Выражения (Школа Разработки Интерфейсов Яндекса).
http://rubular.com – Ruby Regular Expression Editor. Тестирование регулярных выражений.
http://uzer.com.ua/cross/ - кроссворд по регулярным выражениям.
http://www.bitcetera.com/page_attachments/0000/0030/regex_in_a_nutshell.pdf - шпаргалка
http://regex101.com/ - онлайн редактор RegEx
http://regexr.com/ - онлайн редактор RegEx
Описание слайда:
Ссылки http://pcre.ru - регулярные выражения, примеры, документация, шаблоны. http://tech.yandex.ru/education/shri/simf-2013/talks/712/ - Максим Ширшин, Регулярные Выражения (Школа Разработки Интерфейсов Яндекса). http://rubular.com – Ruby Regular Expression Editor. Тестирование регулярных выражений. http://uzer.com.ua/cross/ - кроссворд по регулярным выражениям. http://www.bitcetera.com/page_attachments/0000/0030/regex_in_a_nutshell.pdf - шпаргалка http://regex101.com/ - онлайн редактор RegEx http://regexr.com/ - онлайн редактор RegEx

Слайд 38





Лабораторная работа
Сверстать форму регистрации пользователя на абстрактном сайте. Добавить в форму следующие поля: имя, фамилия, пароль, подтверждение пароля, электронная почта, личный сайт, телефон. Каждое поле нужно проверить на соответствие регулярному выражению:
Имя, фамилия - должны состоять не менее из 3 символов русской кириллицы.
Пароль - должен состоять не менее из 8 символов, содержать хотя бы одну латинскую букву в верхнем регистре, хотя бы одну в нижнем и хотя бы одну цифру
Электронная почта - должна соответствовать формату. За основу взять стандартный формат e-mail: user@domain.zone. Обязательное поле.
Описание слайда:
Лабораторная работа Сверстать форму регистрации пользователя на абстрактном сайте. Добавить в форму следующие поля: имя, фамилия, пароль, подтверждение пароля, электронная почта, личный сайт, телефон. Каждое поле нужно проверить на соответствие регулярному выражению: Имя, фамилия - должны состоять не менее из 3 символов русской кириллицы. Пароль - должен состоять не менее из 8 символов, содержать хотя бы одну латинскую букву в верхнем регистре, хотя бы одну в нижнем и хотя бы одну цифру Электронная почта - должна соответствовать формату. За основу взять стандартный формат e-mail: user@domain.zone. Обязательное поле.

Слайд 39





Лабораторная работа
++
Необязательные поля (скрипт должен работать корректно в случае их отсутствия). Введенные данные должны быть валидны.
Личный сайт - должен соответствовать формату URI. 
Телефон - должен соответствовать международному формату записи телефонных номеров: +7 (495) 111 2233.
Дата рождения в формате (ДД-ММ-ГГГГ)
IP адрес (вводится ручную)
+++
Распарсить URI (http://4pda.ru/forum/index.php?showforum=200)
Домен				(4pda)
Зона					(ru)
Текущая страница/скрипт		(index.php)
GET-запрос				(showforum=200)
Описание слайда:
Лабораторная работа ++ Необязательные поля (скрипт должен работать корректно в случае их отсутствия). Введенные данные должны быть валидны. Личный сайт - должен соответствовать формату URI. Телефон - должен соответствовать международному формату записи телефонных номеров: +7 (495) 111 2233. Дата рождения в формате (ДД-ММ-ГГГГ) IP адрес (вводится ручную) +++ Распарсить URI (http://4pda.ru/forum/index.php?showforum=200) Домен (4pda) Зона (ru) Текущая страница/скрипт (index.php) GET-запрос (showforum=200)



Похожие презентации
Mypresentation.ru
Загрузить презентацию