Регулярные выражения – мощный механизм работы со строками. Здесь мы не будем говорить о регулярных выражениях в целом, поговорим об их использовании в Java. Это становится возможно благодаря пакету
java.util.regex стандартной библиотеки.
Работа с регулярными выражениями в Java начинается с класса
Pattern. Это представление
самого выражения, без привязки к целевому тексту. Создать его можно компиляцией строки, с помощью фабричного метода
Pattern.compile(). Паттерн
иммутабельный и потокобезопасный.
Matcher – регулярное выражение,
примененное к конкретному тексту. Пораждается вызовом метода
Pattern.matches(). Одним паттерном можно порождать несколько разных матчеров. В отличие от паттерна, матчер мутирует. Он не безопасен для многопоточной среды. Основные операции регулярных выражений – перебор совпадений, доступ к группам, замена – реализованы именно в этом классе.
Работа с экземпляром Matcher похожа на работу с итератором. Результат метода
matches() просто скажет, соответствует ли строка шаблону. Но после его вызова матчер
поменяет состояние. Теперь, из него можно получить группы, позицию совпадения в тексте, а также произвести замену.
В объекте шаблона
Pattern реализованы несколько методов-сокращений, чтобы не использовать
Matcher явно. Например, просто проверить строку на соответствие выражению можно одним методом
Pattern.matches().