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

Метод quote

Метод quote класса Pattern принимает одну строку в качестве параметра и возвращает новую строку, в которой все специальные символы регулярного выражения экранированы. Это позволяет использовать произвольный текст как литеральный шаблон для поиска, не опасаясь, что символы вроде ., *, + или ? будут восприняты как метасимволы регулярного выражения. В первый параметр мы передаем строку, которую нужно экранировать.

Синтаксис

Pattern.quote(String s)

Пример

Давайте экранируем строку, содержащую точку, и найдем ее в тексте как литерал:

import java.util.regex.Pattern; import java.util.regex.Matcher; public class Main { public static void main(String[] args) { String str = "abc.de"; String quoted = Pattern.quote(str); System.out.println(quoted); } }

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

"\Qabc.de\E"

Пример

Давайте найдем строку с точкой в тексте, используя quote для безопасного поиска:

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

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

"abc.de"

Пример

Давайте сравним поведение с quote и без него при поиске строки со звездочкой:

import java.util.regex.Pattern; import java.util.regex.Matcher; public class Main { public static void main(String[] args) { String text = "ab*cd abbbcd"; Pattern p1 = Pattern.compile("ab*cd"); Matcher m1 = p1.matcher(text); System.out.println("Without quote:"); while (m1.find()) { System.out.println(m1.group()); } Pattern p2 = Pattern.compile(Pattern.quote("ab*cd")); Matcher m2 = p2.matcher(text); System.out.println("With quote:"); while (m2.find()) { System.out.println(m2.group()); } } }

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

Without quote: "ab*cd" "abbbcd" With quote: "ab*cd"

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

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