我有一个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中的拆分相似?
答案 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)