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

标签 java regex

我希望按数字值拆分字符串(保留所有组)。例如 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/

相关文章:

c# - 线程安全通用规则

java - Resultset.getDate() 抛出异常 java.lang.NumberFormatException : For input string: "Name of Month"

regex - 正则表达式适用于regex101.com,但不适用于prod

python - 正则表达式,更好的方法

c# - 获取以 'proc sql;' 开头并以 'quit;' 结尾的所有 SAS 代码块的正确正则表达式是什么?

java - 了解开关行为

java - Glassfish 无法连接到远程 MySQL,但 localhost 可以

php - preg_split 不删除搜索模式

Java:正则表达式 - 我如何获得第一个引号文本

java - 如何使用 Java 从独立于平台的文本文件中删除 ^M 字符?