java - 正则表达式解析除黑名单术语之外的列表项

标签 java regex

我正在尝试构建一个正则表达式,仅当列表包含列表中的特定项目时,该正则表达式才会匹配列表,并返回列表中除匹配项之外的所有其他项目。 p>

例如:通过此列表,我想匹配水果,但只返回苹果橙色香蕉 :

apple, fruit, orange, banana

我目前正在尝试以下变体:

\b(?:fruit)\b|[^,\s][^\,]*[^,\s]*

这是一个 Java 正则表达式实现,但假设我无权访问运行实际正则表达式的代码。

最佳答案

正则表达式可能不是最好的工具,但将项目加载到列表中可能会更好。在下面的代码片段中,我将您的 CSV 项目/水果列表转换为正式列表。有了该列表,就可以轻松确定是否存在某个项目。如果找到 fruit,那么我们可以返回减去该项目的列表,否则返回 null

public List<String> getItems(String input, String match) {
    String[] array = input.split(",\\s*");
    List<String> list = Arrays.asList(array);
    if (list.contains(match)) {
        return list.remove(match);
    }
    else {
        return null;
    }
}

String fruits = "apple, fruit, orange, banana";
List<String> result = getItems(fruits, "fruit");

关于java - 正则表达式解析除黑名单术语之外的列表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47214378/

相关文章:

java - 在unix和windows中java可执行文件格式是什么

java - 有没有更简单的方法在较长的字符串中查找某种格式?

java - 使用 Nashorn 匹配 Javascript RegEx

php - 对应于 Python 中 PHP 的 preg_match

jquery 如果 url 第一个路径名与 href 匹配,则

java - Hibernate 查询导致大量额外不必要的查询

java - 将 Eclipse 中的多个文件夹分别导入一个项目

javascript - 正则表达式匹配不同数量的单词

javascript - 如何在 "["这样的匹配中排除 "]"和 "[abc]"?

java - Protocol Buffers : How to parse a . Java 原型(prototype)文件