我希望按数字值拆分字符串(保留所有组)。例如 datasource10
将给出 ["datasource","10"]
。
我尝试过使用:
String[] key = "datasource10".split("(?=\\d)");
但是,这不是返回“10”,而是返回[“datasource”,“1”,“0”]
。如何更改它以返回 ["datasource","10"]
?
最佳答案
您可以添加一个条件,该条件还要求左侧为非数字 (\D
)。为此,您可以使用 look-behind像:
.split("(?<=\\D)(?=\\d)")
但是当前的解决方案将以 foo123bar
->foo
123bar
的方式进行拆分,因为您仅在非数字|数字之间进行拆分。
如果您还想在 123bar
(数字|非数字)之间进行拆分,只需反转当前正则表达式并使用 OR 运算符添加它,例如
.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)")
关于java - 按数字正则表达式分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34279136/