10 июн. 2015 г.

Строки. Часть 7 – регулярные выражения в классе String.

toni-stark_reg_exp_smallО регулярных выражениях пишут целые книги, поскольку это достаточно сложная тема. Поэтому, тут мы просто вкратце легонько затронем ее, чтобы вы знали о такой возможности обработки строк в классе String и вообще в Java.

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

Ну, понеслась!

Str00038Начнем с простого примера, разбиения предложения записанного в строке на отдельные слова, в качестве разделителя слов будет использоваться естественный разделитель – пробел. Для этого в классе String есть метод split() – разделение строки на подстроки с использование регулярного выражения.

Регулярным выражением является строка – \\s, которая означает разделитель (пробел, табуляцию, новую строку, перевод страницы и возврат курсора).

Вывод программы следующий:

Str00039

То есть в массиве строк у нас оказались слова (без пробелов между ними) из строки strTst1.

Теперь добавим еще несколько строчек и пару методов к данному коду:

Str00040

Даже самое простое регулярное выражение (-|\\+)?\\d+ выглядит как магическое заклинание :), хотя этот шаблон выбирает в тексте целые числа, которые могут быть как со знаками + или , так и вовсе без них.

Этот фрагмент кода генерирует следующий вывод:

Str00041

Метод replaceAll(), заменяет все последовательности символов в строке попадающие под шаблон регулярного выражения на строку *NUMBER*. Метод replaceFirst() делает то же самое, но только для первого вхождения строки подпадающей под шаблон регулярного выражения. Как видите числа были заменены везде, где бы они не стояли, отдельно, в середине слова или в его начале. Что согласитесь очень удобно, так как не надо парсить (разбирать) строку посимвольно и сравнивать каждый символ на то является он цифрой или нет, а так же есть ли перед ней знак или нет.

Синтаксис регулярных выражений мы изучим чуть позже. Здесь у нас только знакомство с ними.

Добавим еще немножко кода:

Str00042

И запустим программу передав ей некоторые аргументы в командной строке.

Запуск и вывод могут выглядеть так:

Str00043

Здесь желтым подсвечен вывод вышеприведенного фрагмента кода.

Метод matches(), проверяет удовлетворяет ли вся строка целиком заданному регулярному выражению и выводит сообщение о том, подходит оно под этот шаблон или нет, что собственно и видно из вывода программы.

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

Комментариев нет:

Отправить комментарий