【发布时间】:2020-10-21 22:03:01
【问题描述】:
我目前正在尝试用 Java 中的空格拆分字符串,但第一个和最后一个双引号之间的所有内容除外(这是一种特殊情况,它们保证存在)。我对正则表达式相当陌生,但这是我想出的在第一个和最后一个引号中找到子字符串的方法:
regex = ((?<=\").*(?=\"))
我已在https://regex101.com 上对其进行了测试,并对结果感到满意。 但是现在当我尝试像下面这样拆分我的输入字符串时:
String input = "apple \"banana\"";
String[] arr = input.split("\\s+((?<=\").*(?=\"))");
它无法进行实际的拆分。 这是预期的输出:
arr[0] == "apple", arr[1] == "banana"
我收到的输出:
arr[0] == "apple \"banana\""
我在这里缺少什么?任何指导将不胜感激。
编辑:@WiktorStribiżew 在 cmets 中给出了答案。
非常感谢所有提供帮助的人,尤其是@WiktorStribiżew 干杯!
【问题讨论】:
-
你有一个匹配的正则表达式,所以匹配,而不是拆分。
标签: java regex split regex-lookarounds