匹配Sentence java中List/Array的任何单词

Mr.*_*Mak 4 java regex matcher

我有一个List像下面这样的词

List<String> forbiddenWordList = Arrays.asList("LATE", "S/O", "SO", "W/O", "WO");
Run Code Online (Sandbox Code Playgroud)

我如何理解String包含任何一个单词List.喜欢....

String name1 = "Adam Smith";      // false (not found)
String name2 = "Late H Milton";   // true  (found Late)
String name3 = "S/O Furi Kerman"; // true  (found S/O)
String name4 = "Conl Faruk";      // false (not found)
String name5 = "Furi Kerman WO";  // true  (found WO)
Run Code Online (Sandbox Code Playgroud)

正则表达高度赞赏.

Ada*_*ion 8

boolean containsForbiddenName = forbiddenWordList.stream()
     .anyMatch(forbiddenName -> name.toLowerCase()
          .contains(forbiddenName.toLowerCase()));
Run Code Online (Sandbox Code Playgroud)


Mr.*_*Mak 1

最后,在大家的帮助下,我自己找到了解决方案......

    String regex = String.join("|", forbiddenWordList.stream().map(word -> "\\b" + word + "\\b").collect(Collectors.toList()));
    Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
    System.out.println(pattern.matcher(name).find());
Run Code Online (Sandbox Code Playgroud)

单词边界 ( \\b) 有助于查找确切的单词,而不是匹配的文本。感谢大家的帮助。