如何在不同的分隔符之间拆分文本,同时在Java中保留分隔符?

时间:2016-02-20 14:37:16

标签: java regex string split

是否可以使用不同的分隔符拆分文本,同时在返回的数组中保留分隔符。

在示例中,如果我有一个包含以下内容的文本: sin({$=i$}^2

我想把它拆分成一个如下所示的数组:

['sin(' , '{$=i$}', '^2']

而我的分隔符为{}。我设法实现的是一个如下所示的数组:['sin(' , '{$=i$', '}^2']

但是我不能用这段代码在正确的位置制作最后一个分隔符}

String text = "sin({$=i$}^2";
String[] splitted = text.split("(?=[{}])");

1 个答案:

答案 0 :(得分:1)

根据您的示例,您可能正在寻找

split("(?<=\\})|(?=\\{)")

我们正在使用look-around机制

  • (?<=\\})在前面有}的地方拆分(这意味着在}之后拆分)
  • (?=\\{)在其后面有{的地方拆分(这意味着在{之前拆分)

但说实话,split甚至regex可能不是您正在寻找的工具。试着考虑构建自己的解析器/状态机。