按数字正则表达式分割字符串

时间:2015-12-15 00:37:01

标签: java regex

我希望用字符串分割字符串(保留所有组)。例如,datasource10会提供["datasource","10"]

我尝试过使用:

String[] key = "datasource10".split("(?=\\d)");

然而,这不会返回“10”,而是["datasource","1","0"]。如何更改它以返回["datasource","10"]

1 个答案:

答案 0 :(得分:2)

您可以添加一个条件,该条件也要求左侧为非数字(\D)。为此,您可以使用look-behind之类的:

.split("(?<=\\D)(?=\\d)")

但是,当前解决方案将以foo123bar - &gt; foo 123bar的方式分割,因为您只是在非数字之间进行分割。

如果您还想在123bar(数字|非数字)之间进行拆分,只需反向当前正则表达式并将其添加为OR运算符,如

.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)")