Регулярное выражения в шаблонах SSO
Автор Nikolay Ilin, Last modified by Nikolay Ilin на 11 марта 2016 03:04 PM

Небольшая справка по регулярным выражением, примеры их использования в шаблонах 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/

(0 голос(а))
Эта статья полезна
Эта статья бесполезна

Комментарии (0)
Добавить новый комментарий
 
 
Полное имя:
Email:
Комментарии: