Небольшая справка по регулярным выражением, примеры их использования в шаблонах SSO и полезные ссылки по теме.
Регулярные выражения - система обработки текста, основанная на специальной системе записи образцов для поиска. Образец (англ. pattern), задающий правило поиска, по-русски также иногда называют «шаблоном», «маской». Образец состоит из символов и метасимволов.
В шаблонах используются следующие метасимволы (символы обозначающие группы других символов)
\ - считать следующий метасимвол как обычный символ. ^ - начало строки . - один произвольный символ. Кроме '\n' - конец строки. $ - конец строки | - альтернатива (или) () - группировка [] - класс символов
Метасимволы имеют модификаторы (пишутся после метасимвола): * - повторяется 0 или большее число раз + - -//- 1 или большее число раз ? - 1 или 0 раз {n} - точно n раз {n,} - по меньшей мере раз {n,m} - не меньше n, но и не больше m
Множество возможных символов (класс) заключается в квадратные скобки '[]', это значит, что в данном месте может стоять один из указанных в скобках символов. Если первый символ в скобках это '^' - значит ни один из указанных символов не может стоять в данном месте выражения. Внутри класса можно употреблять символ '-', обозначающий диапазон символов. Например, a-z - один из малых букв латинского алфавита, 0-9 - цифра и т.д.
Примеры использования:
1. У двухязычного приложения есть страница авторизации с заголовками: "Добро пожаловать в ПриложениеПользователя версии 1.54321" в русской версии "Welcome to UserApplication ver 1.54321" в английской версии Номер версии будет изменяться в следующих релизах приложения, остальной текст останется прежним
Создадим регулярное выражение, которое можно будет подставить в шаблон для данного приложения:
-
Добавим оба текста как альтернативные используя метасимвол: | Добро пожаловать в ПриложениеПользователя версии 1.54321|Welcome to UserApplication ver 1.54321
-
Заменим динамическую часть текста регулярным выражением .+ - одиночные символы колличеством 1 или больше: Добро пожаловать в ПриложениеПользователя версии.+|Welcome to UserApplication ver.+
Данное регулярное выражение будет соответствовать всем заголовкам новых версий приложения, однако не будет проверять текст, который будет содержать заголовок на месте номера версии, например: Добро пожаловать в ПриложениеПользователя версии Ошибка получения номера версии Такой заголовок также будет соответствовать нашему регулярному выражению, поэтому усложним регулярное выражение, чтобы в случае сообщения "Ошибка получения номера версии" шаблон не срабатывал:
-
Заменим .+ на [0-9.]{3,7} Добро пожаловать в ПриложениеПользователя версии [0-9.]{3,7}|Welcome to UserApplication ver [0-9.]{3,7} [0-9.] - множества возможных символов "0-9" - цифры "." - точка {3,7} - количеством не менее 3 и не более 7 раз. (минимальная длина номера версии равна трем, максимальная равна семи)
2. Изменим задачу - весь текст может изменяться, кроме имени приложения (ПриложениеПользователя или UserApplication)
-
Добавим оба текста как альтернативные используя метасимвол | : Добро пожаловать в ПриложениеПользователя версии 1.54321|Welcome to UserApplication ver 1.54321
-
Заменим динамическую часть текста регулярным выражением .* - одиночные символом колличеством 0 или больше: .*ПриложениеПользователя.*|.*UserApplication.*
3. Создадим регулярное выражение для шаблона веб аутентификации в аккаунт google Возьмем два url для страницы аутентификации
https://accounts.google.com/ServiceLogin?hl=ru&continue=https://www.google.ru/%3Fgfe_rd%3Dcr%26ei%3D_oeIU6ffEtPDNOOzgZgD
https://accounts.google.com/ServiceLogin?hl=ru&continue=https://www.google.ru/%3Fgfe_rd%3Dcr%26ei%3DEYmIU_eEPM2DNOfKgOgF
-
Обратите внимание, что часть адреса изменяется, а часть является статичной. В качестве статичной возьмём часть URL до описания параметров "https://accounts.google.com/ServiceLogin"
-
В url присутствуют символы ".", которые в регулярном выражении являются метасимволами, чтобы они воспринимались как символы точек, добавим метасимвол "\" перед ними. https://accounts\.google\.com/ServiceLogin
-
Заменим динамическую часть URL на .* https://accounts\.google\.com/ServiceLogin.*
Полезные ссылки: Проверка регулярных выражений - http://www.regexe.com/
Больше информации по регулярным выражениям - http://citforum.ru/internet/perl_tut/re.shtml (Русский) http://www.boost.org/doc/libs/1_47_0/li … yntax.html (Английский)
Готовые регулярные выражения с наглядным разбором - http://habrahabr.ru/post/66931/
|