Java StringUtils或任何库类方法来保留分隔符

Java StringUtils或任何库类方法来保留分隔符,java,regex,Java,Regex,我有一根绳子“role1@role2@role3@role4$arole“用分隔符@和$分隔。我使用了下面的java代码 String str = "role1@role2@role3@role4$arole"; String[] values = StringUtils.splitPreserveAllTokens(str, "\\@\\$"); for (String value : values) { System.out.prin

我有一根绳子“role1@role2@role3@role4$arole“用分隔符@和$分隔。我使用了下面的java代码

String str = "role1@role2@role3@role4$arole";
        String[] values = StringUtils.splitPreserveAllTokens(str, "\\@\\$");

        for (String value : values) {
            System.out.println(value);
        }
结果呢

role1
role2
role3
role4
arole
但我的要求是在结果中保留分隔符。因此,结果必须符合要求

role1
@role2
@role3
@role4
$arole
我分析了ApacheCommonsStringUtils方法来实现这一点,但没有找到任何线索


任何库类都可以获得上述预期结果吗?

您可以使用具有正向前瞻性的简单的
拆分

String str = "role1@role2@role3@role4$arole";
String[] res = str.split("(?=[@$])");
System.out.println(Arrays.toString(res));
// => [role1, @role2, @role3, @role4, $arole]

(?=[@$])
正则表达式匹配字符串中后跟
@
$
符号的任何位置(请注意,
$
不必在
[…]
字符类中转义)