Java正则如何按多字符和空格分割字符串以提取数字
问题解决方法
你需要的split正则参数为 \\D+ 即可,这个正则可以匹配连续1个及以上的所有非数字字符,自动把字母、空格、特殊符号都作为分割边界,刚好满足你的提取需求。
完整可运行示例代码
String a = "1a2bc3 4d5 6ads"; String[] numArr = a.split("\\D+"); // 输出拼接结果 1 2 3 4 5 6 String result = String.join(" ", numArr); System.out.println(result);
正则逻辑说明
\\D是正则中数字的反匹配规则,等价于[^0-9],可以匹配所有不属于0-9的字符,天然覆盖你提到的普通字符、空格等分割场景- 后缀的
+代表匹配连续1次及以上的规则,把连续的多个非数字字符识别为同一个分割符,避免生成多余的空字符串元素 - 如果你的实际场景中可能存在字符串开头为非数字的情况,分割后第一个元素会是空值,只需要遍历数组时跳过空字符串即可适配。
内容的提问来源于stack exchange,提问作者Jacel
相关产品推荐
相关产品推荐

