Правильное регулярные выражение

214
30 сентября 2017, 19:58

Представим, что есть строки: 'Привет, у тебя есть чит?', 'Привет, у тебя есть чит', 'Привет, пойдём сегодня читать?'.

Как бы нужно найти слово "чит" в предложениях, именно слово, а не часть другого слова как в 3 предложение выше. Кажется, что сложного? pattern: (.*)(чит|word1|word2|word3)(.*) При регулярном выражении выше во всех случаях будет совпадение. Я пробовал вот так: (.*)(чит|word1|word2|word3)[\\ ]?(.*) да и короче по разному пробовал. Но не нашёл нужный вариант.

Суть в том, что нужно найти слово\слова, перед ними обязательно должен быть(будет) пробел, а после возможно и будет, а возможно и нет. Т.е. искомое слово может быть последние в предложение, а может быть и не последние.

Регулярные выражение использую в Java.

Answer 1

Если «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("Не найдено");
}

Результаты:

Найдено
Найдено
Не найдено
Найдено
Не найдено
Не найдено
READ ALSO
Kартинка не обновляется jsf

Kартинка не обновляется jsf

Извлекаю из базы данных строки, изображение, дату помещаю значения в поля ввода изменяю и произвожу "апдейт",- работает все кроме изображения!...

254
Как создать файловый поток в Xamarin(C#)?

Как создать файловый поток в Xamarin(C#)?

Нужно открыть поток для чтения бинарного файла, но выдаёт ошибкуЯ делал десктопное приложение, а нужно на мобильное

313
Мультиязычность ASP.NET MVC

Мультиязычность ASP.NET MVC

Как лучше сделать многоязычность в приложении? На данный момент использую файлы ресурсов и там перевожу нужные мне слова на разные языки,...

270
Как подключиться к api telegram на C#?

Как подключиться к api telegram на C#?

Как подключиться, читать и писать сообщения в телеграме, но через свою программу, только используя телеграм api?

250