Регулярно выражаемся в Java

By | July 22, 2012

Регулярные выражения в Java? А почему бы и нет, как говорится. Время от времени неизбежно появляется необходимость их использовать, чтобы разбить строку на подстроки или, например, отформатировать данные. Сделать это можно несколькими разными способами.

Способ первый, он же самый простой, для несложных манипуляций – использовать встроенные методы класса String для работы с регулярными выражениями.

Пример 1.1. Разбивание строки на массив строк.

В результате мы получим массив из трех строк: res[0] = 192.168.1.1, res[1] = 127.0.0.1, res[2] = 169.254.165.1.

Пример 1.2. Проверка содержания строки.

Пример 1.3. Получение подстроки. Не совсем красивый способ, заставляющий прибегать к замене.


Способ второй, он же более красивый и удобный – использование Pattern и Matcher из пакета java.util.regex.

Пример 2.1. Проверка содержания строки.

Пример 2.2. Получение подстроки.

Данный способ предоставляет более широкие возможности по использованию регулярных выражений. Также, если шаблон выражения используется более одного раза, напирмер, в цикле, Вы получите выигрыш во времени исполнении кода, если в начале скомпилируете шаблон используя p = Pattern.compile(), а затем подставляя p везде, где необходим данный шаблон.

Здесь считаю нужным также заметить, что первые два способа применяют шаблон ко всей строке, как если бы шаблон имел вид ^abc$. То есть “abc”.matches(“bc”) = false. Способ третий не имеет данной особенности.
Способ третий, он же стильный и для более сложных замен – выражаемся в стиле Perl. Для этого используем класс Perl5Util из пакета org.apache.oro.text.perl.

Пример 3.1. Проверка на содержание строки и получение подстрок.

Пример 3.2. Замена строки в стиле Perl.