用不同的分隔符分隔java中的字符串



我正试图将以下内容拆分为一个列表。

"[A,B], [C,D]";

我需要输出为:

[A,B]
[C,D]

我尝试了以下操作,但得到的输出为:

[A,B
[C,D]

代码:

ArrayList   result = new ArrayList(Arrays.asList(inp.split("\],")));

谢谢。

使用

inp.split(",\s*(?![^\[]*\])")

请参阅正则表达式证明。如果在这之后没有任何不同于[]的字符,它将匹配逗号和后面的任何空白。

您可以使用,s*(?=[),意思是

  • ,逗号
  • s*后面跟任意数量的空间(包括0(
  • (?=[)后面直接跟一个打开的方括号(但是
ArrayList<String> result = new ArrayList<>(Arrays.asList(inp.split(",\s*(?=\[)")));

如果您想要该数据的格式,可以使用G锚点来获得迭代匹配。

然后,您可以循环匹配并将捕获组1添加到列表中。

G([[A-Z],[A-Z]])(?:,h*)?

零件:

  • G断言上一个匹配的末尾或字符串开头的位置
  • (捕获组1
    • [[A-Z],[A-Z]]
  • )关闭组1
  • (?:,h*)?(可选(匹配,和0+水平空白字符

Regex演示| Java演示

示例代码

String regex = "\G(\[[A-Z],[A-Z]])(?:,\h*)?";
String string = "[A,B], [C,D]";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(string);
List<String> result = new ArrayList<String>();
while (matcher.find()) {
result.add(matcher.group(1));
}
for (String element : result)
System.out.println(element);

输出

[A,B]
[C,D]

最新更新