• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Regular Expressions
 

Regular Expressions

on

  • 2,753 views

Presentation about regular expression in java language (Classes: Pattern, Matcher)

Presentation about regular expression in java language (Classes: Pattern, Matcher)

Statistics

Views

Total Views
2,753
Views on SlideShare
2,749
Embed Views
4

Actions

Likes
0
Downloads
17
Comments
0

1 Embed 4

http://www.slideshare.net 4

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Regular Expressions Regular Expressions Presentation Transcript

  • Язык Java Работа с текстом Регулярные выражения
  • Введение
    • java.util.regex — Java 2
    • Регулярные выражения обеспечивают гибкий инструмент для работы с текстом
    • Работа с текстом
      • Через методы объекта String
      • Через массив char
  • java.util.regex
    • Проверка через регулярное выражение
      • String regex = "[A-Za-z0-9_.-]+@[A-Za-z0-9.-]+org"; if (email.matches(regex)) return true;
    • Объекты java.util.regex
      • Pattern — представляет собой определение объекта поиска в терминах регулярных выражений
      • Matcher — представляет собой объект, полученный в результате поиска
  • Pattern
    • Разделители, используемые в регулярных выражениях
    • Для восприятия данного символа как обычного — он должен быть экранирован
  • Классы символов
    • Символы, используемые для отображения классов символов
    • Классы символов могут быть отображены в []
    • После класса символа может быть указано их количество
  • Группы
    • Группа — представляет собой логическое деление текста
    • Обратные ссылки (back reference) — представляют собой ссылки на ранее найденные группы
      • Обращение производится по номеру группы, например, 2.
      • Pattern.compile("(+)")
  • Класс Pattern
    • Константы
      • Int UNIX_LINES = 0x01 — окончание строки представляет собой символ
      • int CASE_INSENSITIVE = 0x02 — при сравнении строк не будет учитываться регистр
      • int COMMENTS = 0x04 — возможность использования комментариев ( от символа # и до конца строки), например, Pattern.compile("A #matches char code 65",Pattern.COMMENTS);
      • int MULTILINE = 0x08 — использование многострочного режима
      • int DOTALL = 0x20 — в данном режиме метасимвол «.» будет соответствовать не только символам, но и переводу строки
      • int LITERAL = 0x10 — в этом режиме метасимволы в строке поиска будут рассматриваться как обычные символы
      • int UNICODE_CASE = 0x40 — режим обработки UNICODE строк
  • Pattern
    • static Pattern compile(String regex) Throws a PatternSyntaxException — компиляция регулярного выражения в паттерн
    • static Pattern compile(String regex, int flags) Throws a PatternSyntaxException
    • String pattern() - получение используемого регулярного выражения
    • Matcher matcher(CharSequence input) — получение объекта Matcher, соответствующего регулярному выражению
    • int flags() - получение используемых флагов
    • static boolean matches (String regex,CharSequence input) — проверка на соответствие регулярному выражению текста
    • String[] split(CharSequence input, int limit) — разделение строки на элементы
    • String[] split(CharSequence input)
  • Matcher
    • Pattern pattern() - получение объекта Pattern для данного объекта Matcher
    • Matcher usePattern(Pattern newPattern) — изменение объекта Pattern для данного объекта Matcher
    • Matcher reset() - сброс состояния объекта Matcher
    • Matcher reset(CharSequence input) — сброс состояния объекта Matcher со сменой строки поиска
    • int start() - получение индекса символа начала соответствия
    • int start(int group) - получение индекса символа начала соответствия в группе
    • int end() - получение индекса символа, следующего за последним символом соответствия
    • int end(int group) - получение индекса символа, следующего за последним символом соответствия в группе
  • Класс Matcher
    • String group() - получение строки соответствия
    • String group(int group) — получение строки соответствия в группе
    • int groupCount() - получение количества групп
    • boolean find() - поиск соответствия во входной последовательности
    • boolean matches() - проверка на соответствие
    • Matcher appendReplacement(StringBuffer sb, String replacement) — замена подстроки в строке и получение нового объекта
    • StringBuffer appendTail(StringBuffer sb) - добавление к новому объекту остатка строки
    • String replaceAll(String replacement) — замена в строке
    • String replaceFirst(String replacement) — одиночная замена в строке
    • Matcher region(int start, int end) — ограничение региона поиска для объекта Matcher
  • Интерфейс MatchResult
    • public int start()
    • int start(int group)
    • int end()
    • int end(int group)
    • String group()
    • String group(int group)
    • int groupCount()
  • Пример использования
    • Console con=System.console(); System.out.print(&quot;Enter regex: &quot;); String reg=con.readLine(); System.out.print(&quot;Enter string:&quot;); String val=con.readLine(); System.out.println(&quot;Replacement: &quot;); String rep=con.readLine(); System.out.println(&quot;Regex: &quot;+reg+&quot; String: &quot;+val); Pattern p=Pattern.compile(reg); Matcher m=p.matcher(val); while(m.find()) { MatchResult mr=m.toMatchResult(); for(int i=0;i<=mr.groupCount();i++) System.out.println(mr.group(i)); } m.reset(); System.out.println(&quot;Replacement result: &quot;+m.replaceAll(rep));
  • Результат
    • Enter regex: ([a-z]+)@([a-z]+).(w{2,4}) Enter string:aa@aa.com hhhhh@ bb@bb.com dghadj asjd @ [email_address] Replacement: test Regex: ([a-z]+)@([a-z]+).(w{2,4}) String: aa@aa.com hhhhh@ bb@bb.com dghadj as jd @ [email_address] [email_address] aa aa com [email_address] bb bb com [email_address] ff ff com Replacement result: test hhhhh@ test dghadj asjd @ test
  • Результат
    • Enter regex: (dd)1 Enter string:3333 fhsdf 4566 6675 7777 8888 9999999 vbjfs 3452 Replacement: found Regex: (dd)1 String: 3333 fhsdf 4566 6675 7777 8888 9999999 vbjfs 3452 3333 33 7777 77 8888 88 Replacement result: found fhsdf 4566 6675 found found 9999999 vbjfs 3452
  • Конец Вопросы e-mail: a.bovanenko@gmail.com