
Regex.pptx
- Количество слайдов: 26
Introduction to Regex Mikhail Karpuk Itransition Software 2009
Что? Где? Когда? Валидация ввода с помощью Regex Поиск в тексте. Regex в. NET www. itransition. com Page 2
Что такое 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. com Page 5
Символьные классы Представление Эквивалент Значение 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, 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 в. NET www. itransition. com Page 8
Добавление валидатора в ASP. NET Достаточно добавить следующую конструкцию:
Проверка 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. itransition. com Page 11
Поиск в тексте Что? Где? Когда? Валидация ввода с помощью 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+’ Соответствия: Anna Banana НЕКОТОРЫЕ НЮАНСЫ www. itransition. com Page 13
Жадные шаблоны • <. *> • попытка выбрать все теги HTML • Результат – игнориирование вложенных тегов:
Метасимвол. (точка) означает один любой символ
• В данном случае можно <[^>]*>Метасимвол. (точка) означает один любой символ
www. itransition. com Page 14
Ленивые шаблоны А можно – проще <. *? >
Метасимвол. (точка) означает один любой символ
Жадный * + {n, } www. itransition. com Ленивый *? +? {n, }? Page 15
Позиция внутри строки Представление Позиция ^ Начало строки (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 или gray-gray (?
Просмотр вперёд и назад Представление Вид просмотра (? =шаблон) (? !шаблон) (? <=шаблон) (?
Regex в. NET Что? Где? Когда? Валидация ввода с помощью Regex Поиск в тексте. Regex в. NET www. itransition. com Page 19
Поиск соответствий String pattern = @"(? x) #comment: x – не учитывать пробелы между частями регулярного выражения (?
Использование групп 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) / 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 23
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 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