Класс Java Matcher

В Java,Matcherэтот класс являетсяjava.util.regexважным классом в пакете, используемым для выполнения различных операций сопоставления со строками.MatcherСам класс нельзя напрямую инстанцировать; вместо этого его нужно создавать с помощьюPatternклассаmatcher()метода создания.

MatcherОсновные функции класса включают:

  • Выполнение операций сопоставления с регулярными выражениями
  • Поиск подпоследовательностей в строке, соответствующих шаблону
  • Замена совпавшего текста

Создание объекта Matcher

Чтобы использоватьMatcherкласса, сначала нужно создатьPatternобъект, затем используйте его для созданияMatcherобъект:

Пример

import java.util.regex.*;

// Создайте объект Pattern
Pattern pattern = Pattern.compile("a*b");

// Создайте объект Matcher
Matcher matcher = pattern.matcher("aaaaab");

Общие методы класса Matcher


Методы операций сопоставления

Метод matches()

matches()Метод пытается сопоставить всю входную последовательность с шаблоном:

Пример

boolean result = matcher.matches(); // Возвращает true или false

Метод lookingAt()

lookingAt()Метод пытается сопоставить шаблон, начиная с начала входной последовательности:

Пример

boolean result = matcher.lookingAt(); // Не обязательно должен совпадать со всей строкой

Метод find()

find()Метод находит следующую совпадающую подпоследовательность во входной последовательности:

Пример

while(matcher.find()) {
    System.out.println("Найдено совпадение: " + matcher.group());
}

Методы получения информации о совпадениях

Метод group()

group()Метод возвращает входную подпоследовательность, совпавшую при предыдущей операции сопоставления:

Пример

String matchedText = matcher.group();

Методы start() и end()

start()иend()Методы возвращают начальный и конечный индексы предыдущего совпадения:

Пример

int start = matcher.start(); // позиция начала совпадения
int end = matcher.end();     // позиция конца совпадения

Метод groupCount()

groupCount()Возвращает количество захватывающих групп в шаблоне этого сопоставителя:

Пример

int count = matcher.groupCount();

Методы операций замены

Метод replaceAll()

replaceAll()Метод заменяет каждую подпоследовательность во входной последовательности, соответствующую шаблону:

Пример

String result = matcher.replaceAll("replacement");

Метод replaceFirst()

replaceFirst()Метод заменяет первую подпоследовательность во входной последовательности, соответствующую шаблону:

Пример

String result = matcher.replaceFirst("replacement");

Пример

Ниже приведён полный пример, показывающий, как использоватьMatcherкласс:

Пример

import java.util.regex.*;

public class MatcherExample {
    public static void main(String[] args) {
        String text = "The quick brown fox jumps over the lazy dog";
        Pattern pattern = Pattern.compile("\\b\\w{4}\\b"); // Сопоставить слова из 4 букв
        Matcher matcher = pattern.matcher(text);
       
        System.out.println("Исходный текст: " + text);
        System.out.println("Совпадения для слов из 4 букв:");
       
        while(matcher.find()) {
            System.out.println("Найдено '" + matcher.group() +
                              "' в позиции " + matcher.start() + "-" + (matcher.end()-1));
        }
       
        // Заменить все слова из 4 букв на "****"
        String replaced = matcher.replaceAll("****");
        System.out.println("\n"Заменённый текст: " + заменено);
    }
}

Результат вывода

原始文本: The quick brown fox jumps over the lazy dog
匹配4字母单词:
找到 'quick' 在位置 4-8
找到 'brown' 在位置 10-14
找到 'jumps' 在位置 20-24
找到 'over' 在位置 26-29
找到 'lazy' 在位置 35-38

替换后的文本: The **** **** fox **** **** the **** dog

Итог

JavaMatcherкласс предоставляет мощную функциональность сопоставления с регулярными выражениями, с помощью которой вы можете:

  1. Проверить, соответствует ли строка заданному шаблону
  2. Найти совпадения с шаблоном в строке
  3. Извлечь совпавшие подстроки
  4. Замена совпавшего текста

ОсвоениеMatcherкласс очень важен для обработки сопоставления строк и текста с шаблонами и является очень практичным инструментом в программировании на Java.

Методы операций сопоставления

Метод Описание
boolean matches() Пытается сопоставить всю область с шаблоном
boolean lookingAt() Пытается сопоставить шаблон, начиная с начала области
boolean find() Пытается найти следующую совпадающую подпоследовательность
boolean find(int start) Находит следующее совпадение, начиная с указанной позиции

Методы получения результатов сопоставления

Метод Описание
String group() Возвращает подпоследовательность предыдущего совпадения
String group(int group) Возвращает совпавшее содержимое указанной захватывающей группы
String group(String name) Возвращает совпавшее содержимое именованной захватывающей группы (Java 7+)
int groupCount() Возвращает количество захватывающих групп в шаблоне
int start() Возвращает индекс начала предыдущего совпадения
int start(int group) Возвращает индекс начала совпадения для указанной группы
int end() Возвращает индекс конца предыдущего совпадения
int end(int group) Возвращает индекс конца совпадения для указанной группы

Методы операций замены

Метод Описание
Matcher appendReplacement(StringBuffer sb, String replacement) Выполняет нетерминальную операцию замены
StringBuffer appendTail(StringBuffer sb) Выполняет терминальную операцию замены
String replaceAll(String replacement) Заменяет все совпадающие подпоследовательности
String replaceFirst(String replacement) Заменяет первую совпадающую подпоследовательность
static String quoteReplacement(String s) Возвращает литерал строки замены

Методы управления регионом

Метод Описание
Matcher region(int start, int end) Устанавливает регион поиска сопоставителя
int regionStart() Возвращает начальный индекс региона сопоставителя
int regionEnd() Возвращает конечный индекс региона сопоставителя
boolean hasTransparentBounds() Проверяет, используются ли прозрачные границы
Matcher useTransparentBounds(boolean b) Устанавливает, используются ли прозрачные границы
boolean hasAnchoringBounds() Проверяет, используются ли границы привязки
Matcher useAnchoringBounds(boolean b) Устанавливает, используются ли границы привязки

Другие методы

Метод Описание
Pattern pattern() Возвращает шаблон этого сопоставителя
Matcher reset() Сбрасывает сопоставитель
Matcher reset(CharSequence input) Сбрасывает сопоставитель с новым вводом
boolean hitEnd() Указывает, достиг ли сопоставитель конца ввода
boolean requireEnd() Указывает, требуется ли дополнительный ввод для сопоставления
Другие расширения