正则表达式,如果行不包含关键字

时间:2018-12-28 07:43:26

标签: java regex

您将如何设置表达式以发现关键字在输入字符串中不存在? 关键词是:鸡蛋,培根,奶酪

功能是:

EXISTS

2 个答案:

答案 0 :(得分:4)

匹配鸡蛋,培根或奶酪的正则表达式为:

(eggs|bacon|cheese)

您需要检测行何时不匹配,以便可以消除这种情况:

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

这与整行匹配。如果要确定行是否包含这些单词中的任何一个,则需要进行不同的匹配-使用.*来匹配行的其余部分,或者使用PatternMatcher

我将使用:\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
}

您必须加倍反斜杠才能将它们转义到字符串中。

答案 1 :(得分:0)

对于正则表达式,Java documentation中提供了相当不错的描述

也请尝试使用此website来尝试您的模式。它可以让您快速查看其行为。

  

公共静态布尔匹配项(字符串正则表达式,                                 CharSequence输入)

     

编译给定的正则表达式并尝试匹配给定的   输入反对。

     

对此形式的便捷方法的调用

 Pattern.matches(regex, input);
     

表现与表达式完全相同

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

如果要多次使用某个模式,请编译一次,然后   重用它比每次调用此方法都更有效率。

     

参数:

     
      
  • regex-要编译的表达式
  •   
  • 输入-要匹配的字符序列
  •   
     

返回:

     
      
  • 正则表达式在输入中是否匹配
  •   
     

投掷:

     
      
  • PatternSyntaxException-如果表达式的语法无效
  •