В чём разница между методами replaceAll, replaceFirst, replace и matches?

Рейтинг: 1Ответов: 2Опубликовано: 22.09.2014

Объясните разницу в методах и почему matches выдаёт false

Код:

public class Reg {
    public static void main(String[] args) {

        String temp = "практ.зан. а. 4-спорт зал";

        System.out.println(temp.replaceAll("а[\\.+][\\S\\s][0-9-, цехспортзал]+", ""));
        System.out.println(temp.replaceFirst("а[\\.+][\\S\\s][0-9-, цехспортзал]+", ""));
        System.out.println(temp.replace("а[\\.+][\\S\\s][0-9-, цехспортзал]+", ""));
        System.out.println(temp.matches("а[\\.+][\\S\\s][0-9-, цехспортзал]+"));
    }
}

Ответ:

практ.зан. 
практ.зан. 
практ.зан. а. 4-спорт зал
false

Ответы

▲ 2

Метод matches() проверяет, соответствует ли строка регулярному выражению полностью. Чтобы проверить, есть ли подстрока, соответствующая регулярному выражени, используйте Pattern.compile(regex).matcher(temp).find().

Метод replaceAll заменяет все вхождения регулярного выражения. Метод replaceFirst заменяет первое вхождение. Метод replace заменяет все вхождения, но не регулярного выражения, а литерала (его первый параметр интерпретируется как конкретная строка для поиска).

▲ 0

По-моему, методы, вызываемые у темп, явно указывают на разницу, переведите replace All, replace First, matches на русский.