Регулярное выражение: точное совпадение слова или содержит слово

В этом примере сопоставления слов с помощью регулярных выражений Java мы научимся сопоставлять определенное слово или слово, содержащее определенную подстроку.

Регулярное выражение Входные строки Совпадения Не совпадает
\\bcat\\b «Кот милый»,
«Категория пуста»
«Некатегория также пуста»
кот категория
некатегория
\\b\\w*кот\\w*\\b «Кот милый»,
«Категория пуста»,
«Некатегория также пуста»
кот
категория
некатегория
Никто

1. Использование регулярных выражений для поиска только точного слова

Чтобы сопоставить точное слово в тексте с помощью regex, мы используем границу слова \b. Это гарантирует, что шаблон будет соответствовать слову целиком, а не как части более длинного слова.

Решение Regex: \\bword\\b

Строго говоря, «\b» соответствует следующим трем позициям:

  • Перед первым символом в данных, если первый символ является символом слова
  • После последнего символа в данных, если последний символ является символом слова
  • Между двумя символами в данных, один из которых является символом слова, а другой — не является символом слова
Шаблон регулярного выражения Описание Пример текста Совпадения Не совпадает
\\bcat\\b Соответствует слову «cat» как целому слову «Кот милый» «кот» «поймать», «категория», «кошки»

Чтобы выполнить поиск «только по определенному слову» с использованием регулярного выражения, просто поместите слово между двумя словами.

import java.util.List;import java.util.regex.*;public class StartsWithEndsWith {public static void main(String[] args) {List<String> lines = List.of("The cat is cute","The category is empty","The non-category is also empty");Pattern pattern = Pattern.compile("\\bcat\\b");for(String line: lines) {Matcher matcher = pattern.matcher(line);while(matcher.find()) {System.out.println(STR."Match found: \{matcher.group()}");}}}}

Вывод программы:

Match found: cat

Вы можете видеть, что он точно соответствует слову «cat», но не соответствует более длинным словам, содержащим слово cat, то есть «category» и «non-category».

2. Использование регулярных выражений для поиска слова, содержащего определенную подстроку

Предположим, вы хотите сопоставить «java» так, чтобы оно могло сопоставлять слова вроде «javap» или «myjava» или «myjavaprogram», т. е. слово java может находиться в любом месте строки данных. Это может быть начало слова с дополнительными символами в конце или конец слова с дополнительными символами в начале, а также между длинными словами.

Чтобы сопоставить слово, содержащее определенную подстроку, мы можем использовать следующее регулярное выражение. Оно сопоставляет любое слово, содержащее подстроку «word», где подстрока может появляться в начале, середине или конце слова.

Решение Regex: \\b\\w*word\\w*\\b

List<String> lines = List.of("The cat is cute","The category is empty","The noncategory is also empty");Pattern pattern = Pattern.compile("\\b\\w*cat\\w*\\b", Pattern.CASE_INSENSITIVE);for(String line: lines) {Matcher matcher = pattern.matcher(line);while(matcher.find()) {System.out.println(STR."Match found: \{matcher.group()}");}}

Вывод программы:

Match found: catMatch found: categoryMatch found: noncategory

Вот и все. Это регулярное выражение Java содержит примеры слов, связанных с граничными и неграничными совпадениями определенного слова с использованием регулярных выражений Java.

Ссылки: Документация по регулярным выражениям Java

Прокрутить вверх