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