如何使用分隔符拆分字符串,还要保留分隔符

时间:2015-02-12 16:26:30

标签: java regex

我有一个像

这样的字符串
list1<^0.1>list2<#0.2>list3

我希望将其拆分为

数组
list1, <^0.1>, list2, <#0.2>, list3

我正在做的是

String[] parts = str.split("((?<=<[^#][\\d\\.]+>)|(?=<[^#][\\d\\.]+>))");

但它不起作用。 我错过了吗?感谢

3 个答案:

答案 0 :(得分:4)

您可以按如下方式修改外观断言:

String s = "list1<^0.1>list2<#0.2>list3";
String[] parts = s.split("(?<=>)|(?=<)");
System.out.println(Arrays.toString(parts));

输出

[list1, <^0.1>, list2, <#0.2>, list3]

答案 1 :(得分:1)

您可以通过此正则表达式进行拆分:

(?<=>)|(?=<)

RegEx Demo

<强>代码:

String[] toks = "list1<^0.1>list2<#0.2>list3".split( "(?<=>)|(?=<)" );
for (String tok: toks)
    System.out.printf("<%s>%n", tok);

输出:

<list1>
<<^0.1>>
<list2>
<<#0.2>>
<list3>

答案 2 :(得分:0)

您可以使用此模式捕获您想要的内容

(<[^>]*>|[^<>]+)

Demo