我希望用字符串分割字符串(保留所有组)。例如,datasource10
会提供["datasource","10"]
。
我尝试过使用:
String[] key = "datasource10".split("(?=\\d)");
然而,这不会返回“10”,而是["datasource","1","0"]
。如何更改它以返回["datasource","10"]
?
答案 0 :(得分:2)
您可以添加一个条件,该条件也要求左侧为非数字(\D
)。为此,您可以使用look-behind之类的:
.split("(?<=\\D)(?=\\d)")
但是,当前解决方案将以foo123bar
- &gt; foo
123bar
的方式分割,因为您只是在非数字之间进行分割。
如果您还想在123bar
(数字|非数字)之间进行拆分,只需反向当前正则表达式并将其添加为OR运算符,如
.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)")