如何为以下类型的String编写正则表达式,以使我得到以下格式的响应?
"abc, -xyz, lmn, qwe,-yui"
基本上,我需要将List<String>
中的字符串解析为
abc, -xyz
lmn
qwe, -yui
在连字符(-)ex之前只有一个空格的情况下,以下代码工作正常:
"abc, -xyz"
但在没有或多于一个空格时不起作用,例如:
"abc, -xyz"
我尝试过的正则表达式:
List<String> items = Arrays.stream(order.split("(?!, -),")).map(String::trim).map(String::toLowerCase).collect(Collectors.toList());
请提供可解析任意数量空格的代码,并说明相同的逻辑。
答案 0 :(得分:1)
您实际上可以使用"(.+?)"
查找所有结果,而不用拆分字符串。这将找到"
之间的所有字符串。这是完整的示例:
String input = "\"abc, -xyz\", \"lmn\", \"qwe,-yui\"";
Pattern pattern = Pattern.compile("\"(?<item>.+?)\"");
Matcher matcher = pattern.matcher(input);
List<String> items = new ArrayList<>();
while (matcher.find()) {
items.add(matcher.group("item"));
}
items.forEach(System.out::println);
结果将是这样:
abc, -xyz
lmn
qwe,-yui
如果需要,您还可以在将项目添加到列表之前使用.trim(),toLowercase()
。