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

问题描述:

我正在寻找一个字符串(保留所有组)的数字值。例如datasource10会给["datasource","10"]按数字分割字符串正则表达式

我已经尝试使用:

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

但是那不是返回 “10”,而是["datasource","1","0"]。我怎样才能改变它返回["datasource","10"]

您可以添加一个条件,这也将要求左侧为非数字(\D)。要做到这一点,你可以使用一个像look-behind

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

但是,目前的解决方案将在某种程度上foo123bar分裂 - >foo123bar,因为你是非数字之间只分裂|数字。

如果你也想123bar之间的分裂(数字|非数字),只需反向电流的正则表达式,并与运营商或像

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

这正是我一直在寻找添加。谢谢 – Dan