Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:类似Javascript的拆分行为_Java_Javascript_Regex - Fatal编程技术网

Java:类似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中

我有如下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中使用基于前瞻的正则表达式:

"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。