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

Поле LITERAL

Поле LITERAL класса Pattern представляет собой флаг (константу типа int), который передается вторым параметром в метод compile. Когда этот флаг установлен, регулярное выражение воспринимается буквально: все метасимволы (такие как ., *, +, ?, [, ], (, ), {, }, ^, $, |, \) теряют свое специальное значение и ищутся как обычные символы. В первый параметр метода compile мы передаем строку с регулярным выражением, во второй - флаг Pattern.LITERAL.

Синтаксис

Pattern.compile(regex, Pattern.LITERAL)

Пример

Давайте сравним работу с флагом LITERAL и без него. Строка "a.c" без флага трактуется как шаблон, где точка означает любой символ. С флагом LITERAL точка ищется буквально:

import java.util.regex.Pattern; import java.util.regex.Matcher; public class Main { public static void main(String[] args) { String regex = "a.c"; String str = "abc"; Pattern p1 = Pattern.compile(regex); Matcher m1 = p1.matcher(str); System.out.println(m1.matches()); Pattern p2 = Pattern.compile(regex, Pattern.LITERAL); Matcher m2 = p2.matcher(str); System.out.println(m2.matches()); } }

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

true false

Пример

Давайте найдем строку, содержащую специальные символы "[abc]", которые в обычном режиме были бы интерпретированы как символьный класс:

import java.util.regex.Pattern; import java.util.regex.Matcher; public class Main { public static void main(String[] args) { String regex = "[abc]"; String str = "xyz[abc]123"; Pattern p = Pattern.compile(regex, Pattern.LITERAL); Matcher m = p.matcher(str); if (m.find()) { System.out.println("Found at index: " + m.start()); } else { System.out.println("Not found"); } } }

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

"Found at index: 3"

Пример

Давайте проверим, как флаг LITERAL влияет на поиск символа обратного слеша, который обычно является экранирующим символом:

import java.util.regex.Pattern; import java.util.regex.Matcher; public class Main { public static void main(String[] args) { String regex = "\\d"; String str = "\\d"; Pattern p = Pattern.compile(regex, Pattern.LITERAL); Matcher m = p.matcher(str); System.out.println(m.matches()); } }

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

true

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

  • метод compile,
    который компилирует регулярное выражение
  • метод quote,
    который экранирует метасимволы
  • метод matcher,
    который создает сопоставитель
  • класс Pattern,
    который представляет скомпилированное регулярное выражение
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить