130 likes | 364 Views
Регулярные выражения. Введение в мир кракозябров. Some people, when confronted with a problem , think "I know, I'll use regular expressions ." Now they have two problems. Василий Гусев MVP: PowerShell MCSE, MCITP. Содержание. Что такое регулярные выражения? Основы Отрицание Якоря
E N D
Регулярные выражения Введениев миркракозябров Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems. Василий Гусев MVP: PowerShell MCSE, MCITP
Содержание • Что такое регулярные выражения? • Основы • Отрицание • Якоря • Квантификаторы • Группы • Замена, удаление, деление • Жадность • Дополнительные возможности • Полезные ресурсы
Что такое регулярныевыражения? • Подстановочные знаки/маски [ad-f]?* • Возможности регулярных выражений • Поиск совпадений • Замена текста • Разделение текста на части • Выборка из текста необходимых фрагментов • Зачем это нужно? • Разбор логов/вебстраниц/конфигов • Преобразование форматов текста • Анализ входных данных
Основы • Оператор -Match • Ищется вхождение текста • Чувствительность к регистру • Один любой символ -. (точка) • Символьные классы (наборы символов)[abc] [A-Z] [0-9] [_a-z0-9] • Метасимволы - \d\w\s • Экранирование символов - \
Отрицание • Отрицание наборов символов [^aoueyi] • Отрицание метасимволов\D\W\S • Оператор -NotMatch
Якоря • ^ - начало строки • Конец строки - $ • Поиск точного совпадения – ^слово$
Квантификаторы • Количественные модификаторы • Живут только с парой • Символ, метасимвол, класс • Умножение – {4} • Диапазон –{4,8} {4,} • 1 или больше –+ • 0 или больше – * • 0 или 1 – ?
Группы • Группировка – (текст) • Захват совпадений • Массив $Matches, нумерация • Именованные группы –(?<метка>выражение) • Незахватывающие группы – (?:выражение)
Замена, удаление, деление • Замена: –Replace 'текст','замена' • Удаление: –Replace 'текст‘ • Использованиегрупп, кавычки'A+B' -Replace '(.)+(.)', '$2+$1' • Оператор -Split
Жадность • По умолчанию все квантификаторы – жадины • Нежадные версии квантификаторов{2,5}? *? +? ?? • Соревнование – кто раньше, тот и больше
Дополнительно в PowerShell • Select-String – grepна стероидах • Switch -Regex -File – мегапарсер • [Regex] – “сырой”.NET
Полезные ресурсы • Книги • Mastering Regular Expressions • Regular Expressions Cookbook • Статья • http://itband.ru/2010/05/regular-expressions-windows-powershell • Блог • http://xaegr.wordpress.com