杰瑞科技汇

Java正则表达式替换字符串怎么写?

Java 正则表达式替换字符串

在 Java 中,可以使用 String.replaceAll()String.replaceFirst()Pattern/Matcher 类来进行正则表达式替换操作。

Java正则表达式替换字符串怎么写?-图1
(图片来源网络,侵删)

使用 String.replaceAll()

replaceAll() 方法使用正则表达式替换所有匹配项:

String original = "Hello 123 World 456";
String replaced = original.replaceAll("\\d+", "NUM");
System.out.println(replaced); // 输出: Hello NUM World NUM

使用 String.replaceFirst()

replaceFirst() 方法只替换第一个匹配项:

String original = "Hello 123 World 456";
String replaced = original.replaceFirst("\\d+", "NUM");
System.out.println(replaced); // 输出: Hello NUM World 456

使用 Pattern 和 Matcher

更复杂的替换可以使用 PatternMatcher 类:

import java.util.regex.*;
String input = "The price is $100.50 and the discount is 20%";
Pattern pattern = Pattern.compile("\\$(\\d+\\.\\d+)|\\d+");
Matcher matcher = pattern.matcher(input);
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
    if (matcher.group(1) != null) {
        // 匹配了 $100.50 这种格式
        matcher.appendReplacement(sb, "Price: " + matcher.group(1));
    } else {
        // 匹配了单独的数字
        matcher.appendReplacement(sb, "Discount: " + matcher.group());
    }
}
matcher.appendTail(sb);
System.out.println(sb.toString());
// 输出: The price is Price: 100.50 and the discount is Discount: 20%

替换中的反向引用

可以使用 $n 来引用捕获组:

Java正则表达式替换字符串怎么写?-图2
(图片来源网络,侵删)
String original = "John Smith, Jane Doe";
String replaced = original.replaceAll("(\\w+) (\\w+)", "$2, $1");
System.out.println(replaced); // 输出: Smith, John, Doe, Jane

替换中的特殊字符

如果要替换的字符串包含 或 \,需要转义:

String original = "Replace $100 with \\100";
String replaced = original.replaceAll("\\$100", "200");
System.out.println(replaced); // 输出: Replace 200 with \100

注意事项

  1. 正则表达式中的特殊字符需要转义(如 、、、、、、、[]、、、\^、)
  2. replaceAll()replaceFirst() 中的第一个参数是正则表达式,不是普通字符串
  3. 替换字符串中的 $n 表示反向引用,要替换字面 需要使用 \$

性能考虑

对于大量文本或频繁替换操作,建议使用 PatternMatcher 类,因为可以预编译正则表达式模式:

Pattern pattern = Pattern.compile("\\d+"); // 预编译
Matcher matcher = pattern.matcher(text);
String result = matcher.replaceAll("NUM");
Java正则表达式替换字符串怎么写?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇