Регулярные выражения java

регулярные выражения

В продолжение статьи Строки в Java: String, StringBuilder, StringBuffer поговорим сегодня о регулярных выражениях:

  • что это такое и для чего нужны регулярные выражения
  • как с ними работать
  • полезные примеры.

Регулярные выражения — это инструмент который задает шаблон для строк. Если у программиста стоит задача обработать большой набор строк и отыскать в нем нужную или проверить соответствует ли входящая строка определенному правилу — регулярные выражения появляются очень к стати.

Регулярные выражения в Java

В Java есть пакет java.util.regex, который позволяет работать с регулярными выражениями. В нем есть интерфейс MatchResult — результат операции сравнения,  классы Matcher — механизм, который выполняет операции сопоставления последовательности символов путем интерпретации шаблона и Pattern — скомпилированное представление регулярного выражения.

У класса Pattern есть метод compile(), который возвращает Pattern, соответствующий регулярному выражению. Метод matches — сравнивает выражение с набором символов и возвращает true, false в зависимости от того совпали строки или нет.

Например проверка пароля, которую мы делали через метод equals может быть реализована более элегантно с помощью метода matches.

А как насчет проверить состоит ли строка только с цифр? С помощью вышеупомянутого метода сделать это легко.

Результат выполнения кода узнаете, когда скопируете и запустите программу у себя.

Метод matches также есть и у класса String. Программа выше будет работать корректно если заменить строку Pattern.matches(«[0-9]+», string) на string.matches(«[0-9]+»). Попробуйте поэкспериментировать.

[0-9]+ и есть регулярное выражение. Оно означает, что принимаются только символы от 0 до 9, а знак + означает, что их может быть один или несколько.

Правила написания регулярных выражений

Примеры выше показали как мощны и удобны regex-пы. Для того, чтобы писать любые условия соответствия строки нужно знать правила их написания.

Их не много и они очень просты и интуитивно понятны.

  1. . — точка это соответствие любому символу
  2. ^строка — находит регулярное выражение, которое должно совпадать в начале строки
  3. строка$ — выражение, которое должно совпадать в конце строки
  4. [абв] — только буквы а или б или в
  5.  [абв][яю] — только буквы а или б или в за которыми следуют я или ю
  6. [^abc] — когда символ каретки появляется в качестве первого символа в квадратных скобках, он отрицает шаблон. Этот шаблон соответствует любому символу, кроме a или b или c.

Следующие метасимволы имеют предопределенное значение и упрощают использование некоторых общих шаблонов.

  1. \d — любая цифра — равнозначно [0-9]
  2. \D — только не цифра — равнозначно [^0-9]
  3. \s — символ пробела
  4. \w — символ слова — равнозначно [a-zA-Z_0-9]

Теперь, когда мы знаем как указать определенный набор элементов — нам нужно знать как указать частоту появления того или другого элемента.

  1. * — символ звездочки означает от ноля до бесконечности
  2. + — символ может встречаться от одного или несколько раз, сокращенно {1,}
  3. ?  — встречается ни разу или один раз, знак вопроса это сокращение для {0,1}
  4. {X} — символ встречается X раз
  5. {X,Y} — символ встречается от X до Y раз.

Теперь очередь примеров.

примеры

Использование регулярных выражений

Regex можно использовать не только с методом matches. Некоторые методы класса String принимают регулярные выражения как параметр.

Регулярные выражения очень часто используют при валидации вводимых полей пользователями. Например, вы хотите, чтобы пароль пользователей был не меньше, чем 8 символов и мог содержать как буквы, так и цифры.

Это все, что касается регулярных выражений в языке программирования java. По крайней мере, больше я не использую в своей практике. Для программирования, а тем более для новичков этого будет вполне достаточно.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *