按数字分割字符串正则表达式
问题描述:
我正在寻找一个字符串(保留所有组)的数字值。例如datasource10
会给["datasource","10"]
。按数字分割字符串正则表达式
我已经尝试使用:
String[] key = "datasource10".split("(?=\\d)");
但是那不是返回 “10”,而是["datasource","1","0"]
。我怎样才能改变它返回["datasource","10"]
?
答
您可以添加一个条件,这也将要求左侧为非数字(\D
)。要做到这一点,你可以使用一个像look-behind:
.split("(?<=\\D)(?=\\d)")
但是,目前的解决方案将在某种程度上foo123bar
分裂 - >foo
123bar
,因为你是非数字之间只分裂|数字。
如果你也想123bar
之间的分裂(数字|非数字),只需反向电流的正则表达式,并与运营商或像
.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)")
这正是我一直在寻找添加。谢谢 – Dan