我有以下字符串 46MTS007
并且我必须从字母中拆分数字所以结果我应该得到一个像 {"46", "MTS", "007"} 这样的数组
String s = "46MTS007";
String[] spl = s.split("\\d+|\\D+");
但是 spl
仍然是空的,正则表达式有什么问题?我已经在 regex101 中进行了测试,它按预期工作(带有全局标志)
最佳答案
如果你想使用拆分,你可以使用这个基于 lookaround 的正则表达式:
(?<=\d)(?=\D)|(?<=\D)(?=\d)
这意味着拆分下一个位置是数字和前一个位置是非数字的位置,或者当位置是非数字而前一个位置是数字时。
在 Java 中:
String s = "46MTS007";
String[] spl = s.split("(?<=\\d)(?=\\D)|(?<=\\D)(?=\\d)");
关于JAVA 与正则表达式拆分不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36364351/