Java正则表达式提取数字与去除数字的实用方法
在Java开发的数据处理场景中,经常需要从包含混合字符的字符串中精准获取数字,或者反过来清除数字只保留文本。利用Java提供的java.util.regex包,通过正则表达式配合Pattern和Matcher类,可以高效且优雅地完成这两类任务。
结果与目标
我们需要解决两个典型场景:一是从如“哈哈,13888889999”这样的字符串中提取纯数字;二是从如“张三 13599998888”这样的字符串中去除数字,仅保留姓名等文本内容。这两种操作是数据清洗的基础步骤。
准备条件
确保项目环境已引入Java标准库(JDK 8及以上版本即可),无需额外依赖。核心涉及类为java.util.regex.Pattern和java.util.regex.Matcher。
真实操作顺序
第1步:通过替换非数字提取所有数字
目的:去除字符串中所有非数字字符,合并剩余部分得到纯数字串。
入口/动作:使用正则表达式[^0-9]匹配任意非0-9之间的字符,并将其替换为空字符串。
复制代码 代码如下:
@Test
public void testExtractNumbers() {
String phoneString = "哈哈,13888889999";
// 1. 编译模式:[^0-9] 表示匹配任何非数字字符
Pattern pattern = Pattern.compile("[^0-9]");
Matcher matcher = pattern.matcher(phoneString);
// 2. 替换所有匹配项为空,即删除非数字
String allNumbers = matcher.replaceAll("");
System.out.println("提取的数字:" + allNumbers); // 输出: 13888889999
// 也可以简化为单行写法
String result = Pattern.compile("[^0-9]").matcher(phoneString).replaceAll("");
}
第2步:通过替换数字提取纯文本
目的:去除字符串中的所有阿拉伯数字,保留汉字、字母或其他符号。
入口/动作:使用正则表达式[\d]匹配单个数字字符,将其替换为空字符串,并注意处理后可能存在的多余空格需进行trim操作。
复制代码 代码如下:
@Test
public void testRemoveNumbers() {
// 原始数据包含中文名称和多个数字段
String r_name3 = "张三 13599998888 000000";
// 匹配任意单个数字 \d 等同于 [0-9]
Pattern pattern = Pattern.compile("[\\d]");
Matcher matcher = pattern.matcher(r_name3);
// 将匹配到的数字替换为空,并去除首尾可能的空格
String pureText = matcher.replaceAll("").trim();
System.out.println("去除数字后的文本:" + pureText); // 输出: 张三
}
完成判断
运行上述测试代码,控制台应正确输出提取后的纯数字串或清理后的纯文本串。若结果中包含预期外的字符或留白,请检查正则表达式是否符合当前字符集规范(例如是否需要兼容全角数字)。
简要总结
利用Pattern定义规则,Matcher执行替换是Java中正则处理的经典范式。掌握[^0-9]与[\d]这两个基础正则表达式,即可灵活应对绝大多数简单的数字提取与过滤需求。以上就是Java正则表达式提取数字与去除数字的详细内容,更多关于Java正则表达式操作的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









