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)
正则表达高度赞赏.
boolean containsForbiddenName = forbiddenWordList.stream()
.anyMatch(forbiddenName -> name.toLowerCase()
.contains(forbiddenName.toLowerCase()));
Run Code Online (Sandbox Code Playgroud)
最后,在大家的帮助下,我自己找到了解决方案......
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) 有助于查找确切的单词,而不是匹配的文本。感谢大家的帮助。
| 归档时间: |
|
| 查看次数: |
1862 次 |
| 最近记录: |