Java:类似Javascript的拆分行为
我有如下javascript代码:Java:类似Javascript的拆分行为,java,javascript,regex,Java,Javascript,Regex,我有如下javascript代码: var tmp = "abcdefg"; alert(tmp.split(/(b)(c)/)); 这让我 [a,b,c,defg] [a,defg] 这正是我想要的,但当我在Java中这样做时,它只会分割字符串,删除匹配的正则表达式 String tmp = "abcdefg"; tmp.split("(b)(c)")); 这让我 [a,b,c,defg] [a,defg] 如何使Java中的拆分行为类似于javascript中的拆分?在Java中
var tmp = "abcdefg";
alert(tmp.split(/(b)(c)/));
这让我
[a,b,c,defg]
[a,defg]
这正是我想要的,但当我在Java中这样做时,它只会分割字符串,删除匹配的正则表达式
String tmp = "abcdefg";
tmp.split("(b)(c)"));
这让我
[a,b,c,defg]
[a,defg]
如何使Java中的拆分行为类似于javascript中的拆分?在Java中使用基于前瞻的正则表达式:
"abcdefg".split( "(?=[bc])|(?<=[bc])" );
“abcdefg”.split((?=[bc])|)(?正如您所见,您不能在Java中的正则表达式split中一直捕获组,但您可以编写:
(?=bc)|(?<=b)(?=c)|(?<=bc)
(?=bc)|(?我正在尝试找出哪个版本的正则表达式与您的JavaScrip“示例”类似。@markspace:这就是JavaScript的split
处理捕获组的方式。所有血淋淋的细节:@T.J.Crowder好的,所以是split()
method,而不是regex本身。很奇怪,但我想我学到了一些东西。@markspace:对。问题并不是说它是regex的东西。它是有效的,但我认为regex可能会以这种方式变得太复杂。在不改变regex的情况下,有什么解决方法吗?@user2773086:嗯,你可以用你原来的regex自己做循环,因为Java的拆分并不能满足您的需要,只需循环,应用正则表达式,将字符串添加到列表中,然后在末尾执行toArray。