РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
665 of 1163 menu

Поле CASE_INSENSITIVE

Поле CASE_INSENSITIVE класса Pattern представляет собой флаг (константу типа int), который включает режим регистронезависимого сопоставления. Когда этот флаг установлен, регулярное выражение будет совпадать с текстом без учёта регистра символов: например, шаблон "abc" сможет найти как "abc", так и "ABC", "AbC" и любые другие комбинации регистра. Флаг передаётся вторым параметром в метод compile класса Pattern. По умолчанию, без указания этого флага, сопоставление выполняется с учётом регистра. Помимо CASE_INSENSITIVE, в метод compile можно передавать и другие флаги, объединяя их через побитовое ИЛИ |.

Синтаксис

Pattern.compile(regex, Pattern.CASE_INSENSITIVE)

Пример

Давайте проверим, найдёт ли шаблон "abc" строку "ABC" без флага CASE_INSENSITIVE:

import java.util.regex.Pattern; import java.util.regex.Matcher; public class Main { public static void main(String[] args) { Pattern pattern = Pattern.compile("abc"); Matcher matcher = pattern.matcher("ABC"); System.out.println(matcher.find()); } }

Результат выполнения кода:

false

Пример

А теперь добавим флаг CASE_INSENSITIVE и снова проверим сопоставление:

import java.util.regex.Pattern; import java.util.regex.Matcher; public class Main { public static void main(String[] args) { Pattern pattern = Pattern.compile("abc", Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher("ABC"); System.out.println(matcher.find()); } }

Результат выполнения кода:

true

Пример

Флаг можно комбинировать с другими флагами через побитовое ИЛИ. Давайте объединим CASE_INSENSITIVE и UNICODE_CASE для корректной регистронезависимой работы с Unicode-символами:

import java.util.regex.Pattern; import java.util.regex.Matcher; public class Main { public static void main(String[] args) { int flags = Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE; Pattern pattern = Pattern.compile("привет", flags); Matcher matcher = pattern.matcher("ПРИВЕТ"); System.out.println(matcher.find()); } }

Результат выполнения кода:

true

Пример

Также флаг можно указать прямо внутри регулярного выражения с помощью конструкции (?i). Давайте посмотрим, как это работает при замене текста:

public class Main { public static void main(String[] args) { String str = "abcde ABCDE"; String res = str.replaceAll("(?i)abc", "X"); System.out.println(res); } }

Результат выполнения кода:

"Xde XDE"

Смотрите также

  • класс Pattern,
    который представляет скомпилированное регулярное выражение
  • метод compile,
    который компилирует регулярное выражение с флагами
  • поле UNICODE_CASE,
    которое включает Unicode-совместимый регистр
  • метод matches,
    который проверяет соответствие строки шаблону
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить