Java:类似Javascript的拆分行为

时间:2015-02-17 16:43:32

标签: java javascript regex

我有一个javascript代码:

var tmp = "abcdefg";
alert(tmp.split(/(b)(c)/));

给了我

[a,b,c,defg]

这就是我想要的,但是当我在Java中使用它时,它只会拆分匹配正则表达式的字符串。

String tmp = "abcdefg";
tmp.split("(b)(c)"));

给了我

[a,defg]

如何使Java中的拆分行为与javascript中的拆分相似?

2 个答案:

答案 0 :(得分:1)

在Java中使用基于前瞻的正则表达式:

"abcdefg".split( "(?=[bc])|(?<=[bc])" );

<强>代码:

String[] toks = "abcdefg".split( "(?=[bc])|(?<=[bc])" );
for (String tok: toks)
    System.out.printf("<%s>%n", tok);

输出:

<a>
<b>
<c>
<defg>

答案 1 :(得分:0)

正如您所看到的,您无法在Java中使用正则表达式拆分继续捕获组,但您可以写:

(?=bc)|(?<=b)(?=c)|(?<=bc)