Java正则表达式替换字符串
在Java中,可以使用String类的replaceAll()、replaceFirst()方法或Pattern和Matcher类来进行基于正则表达式的字符串替换。

使用String类的替换方法
replaceAll()
替换所有匹配正则表达式的子串:
String original = "123abc456def789";
String replaced = original.replaceAll("\\d+", "X");
System.out.println(replaced); // 输出: XabcXdefX
replaceFirst()
只替换第一个匹配的子串:
String original = "123abc456def789";
String replaced = original.replaceFirst("\\d+", "X");
System.out.println(replaced); // 输出: Xabc456def789
使用Pattern和Matcher类
对于更复杂的替换操作,可以使用Pattern和Matcher类:
import java.util.regex.*;
String input = "The price is $100.50 and the tax is $10.25";
Pattern pattern = Pattern("\\$(\\d+\\.\\d{2})");
Matcher matcher = pattern.matcher(input);
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
// 将匹配的价格格式化为"¥价格"
matcher.appendReplacement(sb, "¥" + matcher.group(1));
}
matcher.appendTail(sb);
System.out.println(sb.toString());
// 输出: The price is ¥100.50 and the tax is ¥10.25
替换时使用反向引用
在替换字符串中使用反向引用来引用匹配组:

String original = "John Smith, Jane Doe";
String replaced = original.replaceAll("(\\w+) (\\w+)", "$2, $1");
System.out.println(replaced); // 输出: Smith, John, Doe, Jane
替换时使用回调函数(Java 8+)
Java 8及以上版本可以在替换时使用lambda表达式:
import java.util.function.Function;
String input = "123-456-7890";
Pattern pattern = Pattern.compile("(\\d{3})-(\\d{3})-(\\d{4})");
Matcher matcher = pattern.matcher(input);
String result = matcher.replaceAll(match -> {
return "(" + match.group(1) + ") " + match.group(2) + "-" + match.group(3);
});
System.out.println(result); // 输出: (123) 456-7890
注意事项
- 正则表达式中的反斜杠(
\)在Java字符串中需要双写(\\) - 替换字符串中的字符有特殊含义(反向引用),如果需要匹配字面,需要使用
\$ - 对于复杂的替换逻辑,建议使用
Pattern和Matcher类而不是简单的replaceAll()
希望这些示例能帮助你在Java中使用正则表达式进行字符串替换!
