Скачать презентацию Introduction to Regex Mikhail Karpuk Itransition Software 2009 Скачать презентацию Introduction to Regex Mikhail Karpuk Itransition Software 2009

Regex.pptx

  • Количество слайдов: 26

Introduction to Regex Mikhail Karpuk Itransition Software 2009 Introduction to Regex Mikhail Karpuk Itransition Software 2009

Что? Где? Когда? Валидация ввода с помощью Regex Поиск в тексте. Regex в. NET Что? Где? Когда? Валидация ввода с помощью Regex Поиск в тексте. Regex в. NET www. itransition. com Page 2

Что такое Regex *. txt Регулярные выражения (англ. regular expressions, сокр. Reg. Exp, Reg. Что такое Regex *. txt Регулярные выражения (англ. regular expressions, сокр. Reg. Exp, Reg. Ex, жарг. регэкспы или регексы) — система синтаксического разбора текстовых фрагментов по формализованному шаблону, основанная на системе записи образцов для поиска. Образец (англ. pattern), задающий правило поиска, по-русски также иногда называют «шаблоном» , «маской» . www. itransition. com Page 3

Где и когда использовать Проверка вводимых данных Поиск файлов Поиск информации в больших текстовых Где и когда использовать Проверка вводимых данных Поиск файлов Поиск информации в больших текстовых файлах Для простых задач типа "разбить строчку по запятым" использование регулярных выражений нерационально. www. itransition. com Page 4

Простейшие шаблоны Шаблон: ‘a’ Соответствия: Anna Banana Шаблон: ‘ana’ Соответствия: Anna Banana www. itransition. Простейшие шаблоны Шаблон: ‘a’ Соответствия: Anna Banana Шаблон: ‘ana’ Соответствия: Anna Banana www. itransition. com Page 5

Символьные классы Представление Эквивалент Значение d [0 -9] Цифра D [^d] Любой символ, кроме Символьные классы Представление Эквивалент Значение d [0 -9] Цифра D [^d] Любой символ, кроме цифры w [A-Za-z. А-Яа-я 0 -9_] Символы, образующие «слово» (буквы, цифры и символ подчёркивания) W [^w] Символы, не образующие «слово» s [ tvrnf] Пробельный символ S [^s] Непробельный символ . [^n] Любой символ (кроме новой строки) www. itransition. com Page 6

Поиск последовательностей Представление Число повторений * Ноль или более. Аналогично colou*r {0, } color, Поиск последовательностей Представление Число повторений * Ноль или более. Аналогично colou*r {0, } color, colouur и т. д. + Одно или более. Аналогично colou+r {1, } colour, colouur и т. д. (но не color) ? Ноль или одно. Аналогично {0, 1} colou? r color, colour {n} Ровно n colou{3}r colouuur {m, n} От m до n включительно colou{2, 4} r colouur, colouuuur {m, } Не менее m colou{2, }r colouur, colouuuur и т. д. {, n} Не более n colou{, 3}r color, colouur, colouuur www. itransition. com Пример Соответствие Page 7

Валидация ввода с помощью Regex Что? Где? Когда? Валидация ввода с помощью Regex Поиск Валидация ввода с помощью Regex Что? Где? Когда? Валидация ввода с помощью Regex Поиск в тексте. Regex в. NET www. itransition. com Page 8

Добавление валидатора в ASP. NET Достаточно добавить следующую конструкцию: <asp: Regular. Expression. Validator id=“regex. Добавление валидатора в ASP. NET Достаточно добавить следующую конструкцию: www. itransition. com Page 9

Проверка IP адреса d{1, 3}. (d{1, 3}. ){3}d{1, 3} www. itransition. com Page 10 Проверка IP адреса d{1, 3}. (d{1, 3}. ){3}d{1, 3} www. itransition. com Page 10

Проверка IP адреса ((2[0 -4]d|25[0 -5]|[01]? dd? ). ){3}(2[0 -4]d|25[0 -5]|[01]? dd? ) www. Проверка IP адреса ((2[0 -4]d|25[0 -5]|[01]? dd? ). ){3}(2[0 -4]d|25[0 -5]|[01]? dd? ) www. itransition. com Page 11

Поиск в тексте Что? Где? Когда? Валидация ввода с помощью Regex Поиск в тексте. Поиск в тексте Что? Где? Когда? Валидация ввода с помощью Regex Поиск в тексте. Regex в. NET www. itransition. com Page 12

Шаблон: ‘a*’ Соответствия: ٠A٠n٠n٠a٠ ٠B٠a٠n٠a٠ Шаблон: ‘a? ’ Соответствия: ٠A٠n٠n٠a٠ ٠B٠a٠n٠a٠ Шаблон: ‘a+’ Соответствия: Шаблон: ‘a*’ Соответствия: ٠A٠n٠n٠a٠ ٠B٠a٠n٠a٠ Шаблон: ‘a? ’ Соответствия: ٠A٠n٠n٠a٠ ٠B٠a٠n٠a٠ Шаблон: ‘a+’ Соответствия: Anna Banana НЕКОТОРЫЕ НЮАНСЫ www. itransition. com Page 13

Жадные шаблоны • <. *> • попытка выбрать все теги HTML • Результат – Жадные шаблоны • <. *> • попытка выбрать все теги HTML • Результат – игнориирование вложенных тегов:

Метасимвол. (точка) означает один любой символ

• В данном случае можно <[^>]*>

Метасимвол. (точка) означает один любой символ

www. itransition. com Page 14

Ленивые шаблоны А можно – проще <. *? > <p>Метасимвол. (<i>точка</i>) означает один любой Ленивые шаблоны А можно – проще <. *? >

Метасимвол. (точка) означает один любой символ

Жадный * + {n, } www. itransition. com Ленивый *? +? {n, }? Page 15

Позиция внутри строки Представление Позиция ^ Начало строки (A – ignores multiline) $ Конец Позиция внутри строки Представление Позиция ^ Начало строки (A – ignores multiline) $ Конец строки (z – ignores multiline) b Граница слова Пример Соответствие ^a aaa a$ aaa ab aaa ba aaa B Не граница слова BaB aaa G Предыдущий успешный поиск Ga aaa (поиск остановился на 4 -й позиции — там, где не нашлось a) www. itransition. com Page 16

Группы Синтаксис Описание Пример (exp) Создает группу и присваивает номер (grey|gray)-1 найдёт строку grey-grey Группы Синтаксис Описание Пример (exp) Создает группу и присваивает номер (grey|gray)-1 найдёт строку grey-grey или gray-gray (? exp) Создает группу и присваивает имя b(? w+)bs*kb находит повторяющеся слова (? : exp) Создает группу без обратной связи bgr(? : e|a)yb найдет grey или gray, причем с экономией времени и памяти (? >exp) Атомарная группировка (без обратной связи и возврата по строке) a(? >x*)xa НЕ найдётся axxxa: все x заняты, и нет возврата внутрь группы www. itransition. com Page 17

Просмотр вперёд и назад Представление Вид просмотра (? =шаблон) (? !шаблон) (? <=шаблон) (? Просмотр вперёд и назад Представление Вид просмотра (? =шаблон) (? !шаблон) (? <=шаблон) (?

Regex в. NET Что? Где? Когда? Валидация ввода с помощью Regex Поиск в тексте. Regex в. NET Что? Где? Когда? Валидация ввода с помощью Regex Поиск в тексте. Regex в. NET www. itransition. com Page 19

Поиск соответствий String pattern = @ Поиск соответствий String pattern = @"(? x) #comment: x – не учитывать пробелы между частями регулярного выражения (? 2[0 -4]d|25[0 -5]|[01]? dd? ). (? 2[0 -4]d|25[0 -5]|[01]? dd? ). (? 2[0 -4]d|25[0 -5]|[01]? dd? ). (? 2[0 -4]d|25[0 -5]|[01]? dd? )"; var match = Regex. Match("192. 168. 92. 7, 198. 257. 12. 1, 127. 0. 0. 1", pattern, Regex. Options. Ignore. Pattern. Whitespace | Regex. Options. Compiled); while (match. Success) { String. Format("Address: {0}, found at {1}. “, match. Value, match. Index); match = match. Next. Match(); } //или foreach по Regex. Matches(…); www. itransition. com Page 20

Использование групп var parsed = String. Format(@ Использование групп var parsed = String. Format(@"First octet: {0}, second octet: {1}, third octet: {2}, fourth octet: {3} ", match. Groups["First"], match. Groups["Second"]. Value, match. Groups["Third"]. Captures[0], match. Groups["Fourth"]); var result = match. Result(@"First octet: $1, second octet: $2, third octet: $3, fourth octet: $4 "); www. itransition. com Page 21

Regex class Match(…) / Matches(…) / Is. Match Split (…) Replace (…) Escape (string) Regex class Match(…) / Matches(…) / Is. Match Split (…) Replace (…) Escape (string) / Unescape (string) Get. Group. Names / Get. Group. Numbers Group. Name. From. Number / Group. Number. From. Name Compile. To. Assembly(…) www. itransition. com Page 22

Match class Next. Match() Result(string) Groups Index Length Success Value www. itransition. com Page Match class Next. Match() Result(string) Groups Index Length Success Value www. itransition. com Page 23

Group class Captures Пример нескольких соответствий в одной группе. Шаблон: (a(b)c)+ Строка: abcabcabc Результат? Group class Captures Пример нескольких соответствий в одной группе. Шаблон: (a(b)c)+ Строка: abcabcabc Результат? Index Success Value www. itransition. com Page 24

Ссылки Quick Tutorial http: //www. codeproject. com/KB/dotnet/regextutorial. aspx Wiki http: //ru. wikipedia. org/wiki/Regex MSDN Ссылки Quick Tutorial http: //www. codeproject. com/KB/dotnet/regextutorial. aspx Wiki http: //ru. wikipedia. org/wiki/Regex MSDN http: //msdn. microsoft. com/en-us/library/az 24 scfc. aspx Библиотека выражений http: //regexlib. com/ Краткий справочник http: //www. regular-expressions. info/reference. html Expresso http: //www. ultrapico. com/ www. itransition. com Page 25

Вопросы? Copyright © 2006 Itransition. Page 26 Вопросы? Copyright © 2006 Itransition. Page 26