温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎样用java regex替换文本

发布时间:2026-10-04 19:44:12 来源:亿速云 阅读:93 作者:小樊 栏目:编程语言

在 Java 里用 正则替换文本,核心是用 String.replaceAll()、String.replaceFirst(),或者更灵活的 Pattern + Matcher + appendReplacement/appendTail,以及 Java 9+ 的 Matcher.replaceAll(Function)。

下面按常见场景给你示例。


一、最基础:String.replaceAll

示例 1:把数字替换成 #

String text = "订单号123,金额456";
String result = text.replaceAll("\\d+", "#");
System.out.println(result);
// 订单号#,金额#

示例 2:忽略大小写

String text = "Hello hELLo HeLLo";
String result = text.replaceAll("(?i)hello", "Hi");
System.out.println(result);
// Hi Hi Hi

二、只替换第一次:replaceFirst

String text = "a1 a2 a3";
String result = text.replaceFirst("\\d", "X");
System.out.println(result);
// aX a2 a3

三、使用捕获组(非常常用)

示例:交换姓名顺序

String text = "Zhang, San";
String result = text.replaceAll("(\\w+), (\\w+)", "$2 $1");
System.out.println(result);
// San Zhang
  • (\\w+):第 1 个捕获组 $1
  • (\\w+):第 2 个捕获组 $2

四、动态替换(Java 8 及以前:Matcher)

当你替换逻辑复杂时,用 Matcher:

import java.util.regex.*;

String text = "价格100,价格200";
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher(text);

StringBuffer sb = new StringBuffer();
while (m.find()) {
    int num = Integer.parseInt(m.group());
    m.appendReplacement(sb, String.valueOf(num * 2));
}
m.appendTail(sb);

System.out.println(sb.toString());
// 价格200,价格400

五、Java 9+ 更优雅:Matcher.replaceAll

String text = "a1 b2 c3";
String result = Pattern.compile("\\d")
    .matcher(text)
    .replaceAll(m -> "[" + m.group() + "]");

System.out.println(result);
// a[1] b[2] c[3]

六、转义注意事项(很重要)

1. 反斜杠要写两个

"\\d"   // 表示正则 \d
"\\\\"  // 表示正则 \

2. 替换字符串中的 $ 和 \

text.replaceAll("a", "\\$");

七、常见实用例子

脱敏手机号

String phone = "13812345678";
String masked = phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
// 138****5678

去掉多余空格

"a  b    c".replaceAll("\\s+", " ");

如果你有具体的替换需求(比如某种格式文本、日志、JSON、模板),可以直接贴出来,我可以帮你写完整正则和 Java 代码。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手