Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

Pattern.compile()

Компилирует регулярное выражение в объект Pattern, который можно использовать много раз.

Доступно с: Java 1.4

Синтаксис

static Pattern compile(String regex, int flags)

Параметры

ПараметрТипОписание
regexStringРегулярное выражение. Обратную косую черту в строке Java пишут дважды.
flagsintФлаги, например Pattern.CASE_INSENSITIVE. Можно не указывать.

Возвращаемое значение

PatternСкомпилированный шаблон.

Примеры

Шаблон создают один раз и используют для многих строк:

void main() {
    Pattern zip = Pattern.compile("\\d{5}");
    for (String s : List.of("10115", "1011", "abcde")) {
        IO.println(s + " " + zip.matcher(s).matches());
    }
}

Результат:

10115 true
1011 false
abcde false

Флаг без учёта регистра и разбиение строки:

void main() {
    Pattern java = Pattern.compile("java", Pattern.CASE_INSENSITIVE);
    IO.println(java.matcher("I like JAVA").find());
 
    Pattern sep = Pattern.compile("\\s*[,;]\\s*");
    IO.println(Arrays.toString(sep.split("a , b;c ;d")));
}

Результат:

true
[a, b, c, d]

Примечания

Компиляция шаблона — дорогая операция. Методы String.matches(), replaceAll() и split() компилируют выражение при каждом вызове, поэтому в цикле или в часто вызываемом методе шаблон лучше хранить в поле private static final Pattern. Объект Pattern неизменяем и потокобезопасен.

Ошибка в выражении приводит к PatternSyntaxException. Чтобы искать текст буквально, без особых символов, оберните его в Pattern.quote().

См. также

  • Pattern.matcher() — Создаёт объект Matcher, который ищет совпадения шаблона в конкретной строке.
  • Matcher.find() — Ищет следующее совпадение шаблона в любом месте строки.
  • String.matches() — Проверяет, соответствует ли вся строка регулярному выражению.
  • String.replaceAll() — Заменяет все совпадения регулярного выражения.

Вопросы и ответы по теме

В учебнике

  • Регулярные выражения — Регулярные выражения в Java: matches, replaceAll, split по шаблону, классы Pattern и Matcher, группы и экранирование обратной косой черты.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.