Pattern.compile()
Компилирует регулярное выражение в объект Pattern, который можно использовать много раз.
Доступно с: Java 1.4
Синтаксис
static Pattern compile(String regex, int flags)Параметры
| Параметр | Тип | Описание |
|---|---|---|
| regex | String | Регулярное выражение. Обратную косую черту в строке Java пишут дважды. |
| flags | int | Флаги, например 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, группы и экранирование обратной косой черты.