Представим, что есть строки: 'Привет, у тебя есть чит?', 'Привет, у тебя есть чит', 'Привет, пойдём сегодня читать?'.
Как бы нужно найти слово "чит" в предложениях, именно слово, а не часть другого слова как в 3 предложение выше. Кажется, что сложного?
pattern: (.*)(чит|word1|word2|word3)(.*)
При регулярном выражении выше во всех случаях будет совпадение.
Я пробовал вот так: (.*)(чит|word1|word2|word3)[\\ ]?(.*) да и короче по разному пробовал. Но не нашёл нужный вариант.
Суть в том, что нужно найти слово\слова, перед ними обязательно должен быть(будет) пробел, а после возможно и будет, а возможно и нет. Т.е. искомое слово может быть последние в предложение, а может быть и не последние.
Регулярные выражение использую в Java.
Если «0чит123» считается за слово «чит», то используйте так:
"(.*)(чит)[^а-яА-Я](.*)" - получите отсев всех символов, которые "не буква"
(метод предложен участником @diraria в коментариях)
если нет, то воспользуйтесь этим предложением:
"\\bчит\\b" - получите отсев всех символов, которые "заканчивают слово"
(метод предложен участником @Visman в коментариях)
Примеры:
Pattern p = Pattern.compile("\\bчит\\b");
//Pattern p = Pattern.compile("(.*)(чит)[^а-яА-Я](.*)");
Matcher m;
String input[] =
{ "Привет, у тебя есть чит?", "Привет, у тебя есть чит", "Привет, пойдём сегодня читать?" };
for (String text : input)
{
m = p.matcher(text);
boolean found = m.find();
if (found)
{
System.out.println("Найдено");
}
else
System.out.println("Не найдено");
}
Результаты:
Найдено
Найдено
Не найдено
Найдено
Не найдено
Не найдено
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости