Найти строку с одним словом и без какого-либо другого - PullRequest
0 голосов
/ 13 февраля 2012

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

Пример, я хотел бы получить строку, которая содержит как слова ice и snow, но не содержитДерево и лыжи.Порядок слов не важен.

Я начал тонкую линию со льдом и снегом

(ice)*(snow)

Кажется, это работает, но если порядок инвертирован, это не работает.

edit:

возможно ли вернуть слово, которое имеет 3 или более букв между словом ice и snow

Ответы [ 2 ]

2 голосов
/ 13 февраля 2012

Я думаю, regex будет излишним в этом случае, просто используйте String.contains() метод String класса.

String str = "line contains ice and snow";
if(str.contains("ice") && str.contains("snow"))
        System.out.println("contains both");
else
        System.out.println("does not contain both");

Выход = contains both

String str = "line contains ice";
if(str.contains("ice") && str.contains("snow"))
        System.out.println("contains both");
else
        System.out.println("does not contain both");

Выход = does not contain both

1 голос
/ 13 февраля 2012

Я согласен с @RanRag, что в этом случае регулярное выражение является избыточным, но вот как это можно сделать в любом случае:

(?=.*\bice\b)(?=.*\bsnow\b)(?!.*\btree\b)(?!.*\bski\b)

(?=...) - это позитивный прогноз, а (?!...) - негативный прогноз.Регулярное выражение также использует границу слова \b, чтобы оно не совпадало с частями слова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...