Your SlideShare is downloading. ×
0
Технологический семинар: Регулярные выражения
Технологический семинар: Регулярные выражения
Технологический семинар: Регулярные выражения
Технологический семинар: Регулярные выражения
Технологический семинар: Регулярные выражения
Технологический семинар: Регулярные выражения
Технологический семинар: Регулярные выражения
Технологический семинар: Регулярные выражения
Технологический семинар: Регулярные выражения
Технологический семинар: Регулярные выражения
Технологический семинар: Регулярные выражения
Технологический семинар: Регулярные выражения
Технологический семинар: Регулярные выражения
Технологический семинар: Регулярные выражения
Технологический семинар: Регулярные выражения
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Технологический семинар: Регулярные выражения

349

Published on

* Зачем нужны реглярные выражения? …

* Зачем нужны реглярные выражения?
* Типы регулярных выражений
* Введение в синтаксис PCRE
* “Жадные” и не “жадные” регулярные выражения
* Спосообы применения регулярных выражений: поиск и замена

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
349
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Лекция  5.  Регулярные   выражения   www.compscicenter.ru   1   Толстиков  Никита   tolsGkov.n.s@gmail.com   СS  центр     19.03.2014  
  • 2. Регулярные  выражения   www.compscicenter.ru   2  19.03.2014   •  Регулярные  выражения  (Regular  Expressions,  RegExp)  —  это  формальный   язык  поиска  и  осуществления  манипуляций  с  подстроками  в  тексте.   •  Более  простые  аналоги  —  wildcards,  файловые  маски.   •  Регулярные  выражения  реализованы  в  большинстве  языков   программирования.   •  Различные  реализации  отличаются  в  деталях,  но  принципы  создания   регулярных  выражений  везде  одинаковы.   •  Две  основные  задачи:  поиск  и  замена.      
  • 3. BRE   www.compscicenter.ru   3  19.03.2014   •  Синтаксис  BRE  (basic  regular  expressions)  на  данный  момент  определён   POSIX  как  устаревший.   •  BRE  широко  распространён  из  соображений  обратной  совместимости.   •  Многие  UNIX-­‐утилиты  используют  такие  регулярные  выражения  по   умолчанию.      
  • 4. ERE   www.compscicenter.ru   4  19.03.2014   •  Синтаксис  ERE  (Extended  Regular  Expressions)  определён  в  POSIX.   •  Отличия  от  BRE:   •  Отменено  использование  обратной  косой  черты  для  метасимволов   ‘{}’  и  ‘()’.   •  Обратная  косая  черта  перед  метасимволом  отменяет  его   специальное  значение.   •  Добавлены  метасимволы  ‘+’,  ‘?’,  ‘|’.   •  Возможность  использования  символьных  классов  POSIX      
  • 5. Основные  операторы   www.compscicenter.ru   5  19.03.2014   •  Логическое  “или”  ‘|’  —  разделяет  допустимые  варианты:    black|block   •  Группировка  ‘()’  —  определяет  область  действия  и  приоритет   операторов.    b(lo|a)ck   •  Произвольный  символ  ‘.’.    bl.ck   •  Список  символов  ‘[]’.    bl[ao]ck   •  При  замене  можно  ссылаться  на  группы:    s/(black|white)  (cat|dog)s/2s  are  1/  
  • 6. Квантификация   www.compscicenter.ru   6  19.03.2014   •  Замыкание  Клини  ‘*’  —  любое  количество  повторений  (в  т.ч.  0).    noo*   •  “Плюс”  ‘+’  —  хотя  бы  одно  повторение.    no+   •  “Вопрос”  ‘?’  —  не  более  одного  повторения.    bl?ack   •  Явное  указание  количества  ‘{}’.    wazzu{1,7}p  no{4,}  
  • 7. Продвинутые  операторы   www.compscicenter.ru   7  19.03.2014   •  Список  запрещённых  символов  ‘[ˆ]’.    bl[ˆio]ck   •  Интервалы  символов  [  -­‐  ].    [A-­‐Z][a-­‐z]+  [1-­‐9][0-­‐9]*   •  Якоря:  начало  строки  ˆ  и  конец  строки  $.      ˆ[A-­‐Z][a-­‐z]+  [1-­‐9][0-­‐9]*$   •  Классы  символов  POSIX:  [:alnum:],  [:cntrl:],  [:lower:],  [:upper:],  [:space:],   [:word:],  [:alpha:],  [:digit:],  [:print:],  [:blank:],  [:graph:],  [:punct:],  [:xdigit:]    [[:alpha:]]+  [[:digit:]]+  
  • 8. PCRE   www.compscicenter.ru   8  19.03.2014   •  Perl  compaGble  regular  expressions.   •  Поставляется  в  виде  отдельной  библиотеки.   •  Добавлено  множество  специальных  символов  и  модификаторов.   •  Короткие  синонимы  для  классов  символов:     w,  W  —  буква,  всё  кроме  букв;     d,  D  —  цифра,  всё  кроме  цифр.   •  Атомарные  группировки  ‘(?:)’.    b(?:lo|a)ck   •  Ограничители  слов:  b   •  Модификаторы:    i  регистронезависимый  поиск;                  m  многострочный  режим;                    s  символ  ‘.’  совпадает  и  с  переносом  строки;                  A  привязка  к  началу  текста;                  E  привязка  к  концу  текста;                    U  инвертирует  “жадность”;  
  • 9. Жадность  квантификаторов   www.compscicenter.ru   9  19.03.2014   •  Квантификаторы  могут  иметь  один  из  трёх  типов  жадности:   o  жадный  —  квантификатор  захватывает  как  можно  больше;   o  ленивый  —  квантификатор  захватывает  как  можно  меньше;   o  сверхжадный  (ревнивый)  —  квантификатор  захватывает  как  можно   больше  и  не  отдаёт  назад.   •  Обозначение  квантификаторов  разной  жадности:   Жадный     Ленивый   Сверхжадный   *   *?   *+   ?   ??   ?+   +   +?   ++   {n,  }   {n,  }?   {n,  }+  
  • 10. grep   www.compscicenter.ru   10  19.03.2014   •  Название  представляет  собой  акроним  английской  фразы  «search   Globally  for  lines  matching  the  Regular  Expression,  and  Print  them».   •  Есть  несколько  синонимов:      egrep  =  grep  -­‐E  (ERE)    grep  -­‐P  использует  PCRE    rgrep  =  grep  -­‐r   •  Пример  использования:    $  grep  -­‐E  ’ˆ[bcBC]at’  heroes.txt    $  rgrep  apache  /etc  
  • 11. sed   www.compscicenter.ru   11  19.03.2014   •  Потоковый  редактор  вроде  ed.   •  Обрабатывает  текст  в  один  прогон.   •  Команды  редактирования:      [  addr  [  ,  addr  ]  ]  cmd  [  args  ]   •  Примеры:   $  sed  -­‐e  ’/secret/d’  text.txt   $  sed  -­‐e  ’s/<[ˆ>]*>//g;/ˆs*$/d’  index.html  
  • 12. Простые  примеры   www.compscicenter.ru   12  19.03.2014   •  Слово  с  дефисами:    ˆ[a-­‐z0-­‐9]+(-­‐[a-­‐z0-­‐9]+)*$   •  Имя  пользователя:    ˆ[a-­‐z0-­‐9_-­‐]{3,16}$   •  Пароль:      ˆ[a-­‐z0-­‐9_!@$%ˆ&*()+=-­‐]{6,18}$   •  XML  тег:    <([a-­‐z]+)([ˆ>]+)*(?:>(.*)</1>|s+/>)   •  Email:    ˆ([a-­‐z0-­‐9_.-­‐]+)@([a-­‐z0-­‐9_.-­‐]+).([a-­‐z.]{2,6})$  
  • 13. Не  такие  уж  простые...   www.compscicenter.ru   13  19.03.2014   •   Выражение  для  e-­‐mail  соответствующее  RFC  822.   (?:(?:rn)?[  t])*(?:(?:(?:[^()<>@,;:".[]  000-­‐031]+(?:(?:(?:rn)?[  t]   )+|Z|(?=[["()<>@,;:".[]]))|"(?:[^"r]|.|(?:(?:rn)?[  t]))*"(?:(?:          [78  строк]   |(?=[["()<>@,;:".[]]))|[([^[]r]|.)*](?:(?:rn)?[  t])*))*>(?:(   ?:rn)?[  t])*))*)?;s*)   •  Регулярные  выражения  не  предназначены  для  разбора  сложно   структурированных  текстов  (вроде  HTML  и  XML).  
  • 14. Полезные  ссылки   www.compscicenter.ru   14  19.03.2014   •  Expresso:    http://www.ultrapico.com/expresso.htm   •  Visual  REGEXP:    h¤p://laurent.riesterer.free.fr/regexp/      
  • 15. Спасибо  за  внимание   www.compscicenter.ru   15  19.03.2014  

×