Сопоставление шаблонов с Regex
Часть раздела Логика и управление потоком путешествия по Java на Coddy — урок 47 из 59.
Классы Pattern и Matcher предоставляют мощные инструменты для операций с регулярными выражениями в Java. Сначала разберёмся, как их использовать:
Создайте pattern с помощью Pattern.compile():
Pattern pattern = Pattern.compile("cat");
// Creates a pattern to find "cat"Создайте matcher для вашего текста:
String text = "The cat and dog";
Matcher matcher = pattern.matcher(text);
// Создаёт matcher для текстаТеперь вы можете находить совпадения с помощью matcher.find():
while (matcher.find()) {
System.out.println("Found at: " + matcher.start());
}После выполнения приведённого выше кода вывод: Found at: 4
Понимание методов:
<b>matcher.find()</b>- Ищет следующее вхождение шаблона в текст- Возвращает
true, если совпадение найдено - Возвращает
false, если больше нет совпадений - Вот почему мы используем его в цикле
while- чтобы найти все вхождения
- Возвращает
<b>matcher.start()</b>- Возвращает начальный индекс (позицию) последнего совпадения, найденного методомfind()- В нашем примере, "cat" начинается с индекса 4 в "The cat and dog"
- Должен вызываться после успешного
find()
Пример с несколькими совпадениями:
Pattern pattern = Pattern.compile("cat");
Matcher matcher = pattern.matcher("cat and cat");
while (matcher.find()) {
System.out.println("Found at: " + matcher.start());
}
// Output:
// Found at: 0
// Found at: 8Задание
ЛегкоСоздайте метод с именем findWords, который принимает два аргумента:
- Строка (
text) для поиска в ней - Строка (
word) для поиска
Метод должен:
- Использовать Pattern и Matcher для поиска всех вхождений слова
- Вернуть строку, содержащую позиции, где найдено слово
- Позиции должны быть разделены пробелами
Возвращаемые сообщения должны быть:
- Если любой входной параметр равен null: вернуть "Invalid input"
- Если слово не найдено: вернуть "Not found"
- Если найдено: вернуть позиции (например, "4 10 15")
Шпаргалка
Классы Pattern и Matcher предоставляют мощные инструменты для операций с регулярными выражениями в Java.
Создайте pattern с помощью Pattern.compile():
Pattern pattern = Pattern.compile("cat");
// Creates a pattern to find "cat"Создайте matcher для вашего текста:
String text = "The cat and dog";
Matcher matcher = pattern.matcher(text);
// Creates a matcher for the textНайдите совпадения с помощью matcher.find():
while (matcher.find()) {
System.out.println("Found at: " + matcher.start());
}Ключевые методы:
<b>matcher.find()</b>— ищет следующее вхождение шаблона- Возвращает
true, если найдено,false, если больше нет совпадений - Используйте в цикле для поиска всех вхождений
- Возвращает
<b>matcher.start()</b>— возвращает начальный индекс последнего найденного совпадения- Вызывайте после успешного
find()
- Вызывайте после успешного
Попробуйте сами
import java.util.Scanner;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static String findWords(String text, String word) {
// Напишите свой код здесь
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String text = scanner.nextLine();
String word = scanner.nextLine();
if (text.equals("null")) text = null;
if (word.equals("null")) word = null;
System.out.println(findWords(text, word));
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Многомерные массивы
Основы 2D-массивовДоступ к элементам 2D-массиваВложенные циклы с 2D-массивамиПовторение - 2D-массивыСложение и вычитание матрицРваные массивы3D-массивы и вышеРаспространённые паттерны 2D-массивовПовторение - всё о массивах2HashMap Часть 1
Что такое HashMap?Объявление HashMapДоступ к значениямПроверка существования ключаИзменение словарейИтоги - HashMap5HashSet Часть 2
Математика - Объединение HashSetsМатематика - Пересечение HashSetМатематика - Разность множествМатематика - Симметрическая разностьПодмножества и надмножестваИтерация по множествам8Продвинутые операции со строками
Основы StringBuilderВведение в StringBufferОсновы регулярных выраженийСопоставление шаблонов с RegexСтроковый токенизаторПродвинутое форматирование строк3HashMap. Часть 2
Методы HashMapИтерация с keySet()Итерация с entrySet()Вложенный HashMapПовторение - Управление складомПовторение - Операции HashMap6Продвинутое управление потоком
Операторы метокВыражение switchСопоставление шаблоновОхранные клаузыИтоги - управление потоком9Проект - Счетчик уникальных слов
Ввод и хранение текстаОбработка слов