在 Java 里用 正则替换文本,核心是用 String.replaceAll()、String.replaceFirst(),或者更灵活的 Pattern + Matcher + appendReplacement/appendTail,以及 Java 9+ 的 Matcher.replaceAll(Function)。
下面按常见场景给你示例。
String.replaceAll#String text = "订单号123,金额456";
String result = text.replaceAll("\\d+", "#");
System.out.println(result);
// 订单号#,金额#
String text = "Hello hELLo HeLLo";
String result = text.replaceAll("(?i)hello", "Hi");
System.out.println(result);
// Hi Hi Hi
replaceFirstString 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当你替换逻辑复杂时,用 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
Matcher.replaceAllString 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]
"\\d" // 表示正则 \d
"\\\\" // 表示正则 \
$ 和 \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 代码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。