Регулярное выражение, если строка не содержит ключевых слов - PullRequest
0 голосов
/ 28 декабря 2018

Как бы вы настроили выражение, чтобы найти, что ключевые слова не существуют во входной строке?Ключевые слова: яйца, бекон, сыр

Функция:

    if (!line.matches("eggs") || !line.contains("bacon")|| !line.contains("cheese") )
    {
        match=line;
    }

    return matchregex;

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Регулярное выражение для совпадения яиц, бекона или сыра:

(eggs|bacon|cheese)

Вам нужно определить, когда строки не совпадают, поэтому вы можете отменить условие примерно так:

if (!line.matches("(eggs|bacon|cheese)") {
    // Do something
}

Это соответствует всей строке.Если вы хотите указать, содержит ли строка какое-либо из этих слов, вам нужно будет найти другое совпадение - либо с помощью .*, чтобы сопоставить остальную часть строки, либо с помощью Pattern и Matcher.

Я бы использовал: \b, чтобы отметить границы слов, чтобы убедиться, что вы соответствуете только cheese и не соответствует cheesecake.

Pattern pattern = Pattern.compile("\\b(eggs|bacon|cheese)\\b");
Matcher matcher = pattern.matcher(line);
if (!matcher.find()) {
    // Do something
}

В качестве альтернативы:

if (!line.matches(".*\\b(eggs|bacon|cheese)\\b.*")) {
    // Do something
}

Вы должны удвоить обратную косую черту, чтобы избежать их внутри строки.

0 голосов
/ 28 декабря 2018

Для регулярных выражений достаточно приличное описание доступно из документации Java

Также попробуйте этот веб-сайт , чтобы опробовать ваш шаблон.Это позволит вам быстро увидеть, как он себя ведет.

публичные статические логические совпадения (строковое регулярное выражение, ввод CharSequence)

Компилирует заданное регулярное выражение и пытаетсядля сопоставления заданного ввода с ним.

Вызов этого вспомогательного метода в форме

 Pattern.matches(regex, input);

ведет себя точно так же, как выражение

 Pattern.compile(regex).matcher(input).matches()

Если шаблон должен использоваться несколько раз, его компиляция и повторное использование будет более эффективным, чем каждый раз вызывать этот метод.

Параметры:

  • regex - выражение, которое будетскомпилированный
  • input - последовательность символов для сопоставления

Возвращает:

  • независимо от того, совпадает ли регулярное выражение на входе

Броски:

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