java split regex:使用大括号之间的任何文本拆分字符串并保留分隔符

时间:2013-06-04 00:11:55

标签: java regex split string-split

由于另一个question on here,我几乎得到了我需要的东西,但并不完全。

我正在尝试使用java的String.split()来分解字符串并保留正则表达式分隔符。我的分隔符不是单个字符。例如:

hello {world} this is {stack overflow} and this is my string

需要分成如下数组:

hello

{world}

this is

{stack overflow}

and this is my string

我可以使用{[^}]+}匹配{和}之间的所有文本,并使用它分割字符串。但我真的需要在{和}之间保留文本。

1 个答案:

答案 0 :(得分:9)

尝试分裂这种方式

yourString.split("\\s(?=\\{)|(?<=\\})\\s")

它将在其后面有{的每个空格或在其前面有}的空格中分割。


演示

for (String s : "hello {world} this is {stack overflow} and this is my string"
        .split("\\s(?=\\{)|(?<=\\})\\s")) 
    System.out.println(s);

输出

hello
{world}
this is
{stack overflow}
and this is my string