Java正则表达式-查找/替换

1 什么是查找/替换

我们可以找到一个模式并将其替换为一些文本,替换后的文本取决于匹配的文本。

在Java中,我们可以在Matcher类中使用以下两种方法来完成此任务。

Matcher appendReplacement(StringBuffer sb, String replacement)
StringBuffer appendTail(StringBuffer sb)

2 查找/替换的案例

假设我们有以下内容:

We have 7 tutorials for Java, 2 tutorials for Javascript and 1 tutorial for Oracle.

我们要按照以下规则将数字更改为文本。

  • 如果大于5,则替换为"many"
  • 如果少于5,则替换为"a few"
  • 如果为1,则替换为“only one”

替换后,上述句子为:

We have many tutorials for Java, a few tutorials for Javascript and only one tutorial for Oracle.

要查找所有数字,我们可以使用\b\d+\b。 \b标记单词边界。

以下代码展示了如何使用正则表达式以及appendReplacement() 和appendTail() 方法

import java.util.regex.Matcher;
import java.util.regex.Pattern;
/* www.yiidian.com 一点教程网*/
public class Main {
  public static void main(String[] args) {
    String regex = "\\b\\d+\\b";
    StringBuffer sb = new StringBuffer();
    String replacementText = "";
    String matchedText = "";

    String text = "We have 7 tutorials for Java, 2 tutorials for Javascript and 1 tutorial for Oracle.";

    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(text);

    while (m.find()) {
      matchedText = m.group();
      int num = Integer.parseInt(matchedText);
      if (num == 1) {
        replacementText = "only one";
      } else if (num < 5) {
        replacementText = "a few";
      } else {
        replacementText = "many";
      }
      m.appendReplacement(sb, replacementText);
    }

    m.appendTail(sb);
    System.out.println("Old  Text: " + text);
    System.out.println("New Text: " + sb.toString());
  }
}

以上代码执行结果为:

Old Text:We have 7 tutorials for Java, 2 tutorials for Javascript and 1 tutorial for Oracle.
New Text: We have many tutorials for Java, a few tutorials for Javascript and only one tutorial for Oracle.

 

热门文章

优秀文章