2021-04-18 11:21  阅读(67)
文章分类:Java 基础教程 文章标签:JavaJava 教程
©  原文作者:w3cschool 原文地址:https://www.w3cschool.cn/java/java-regex-character-classes.html

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

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

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

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

例子

假设我们有以下文本。

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

我们想在以下规则中将数字更改为文本。

  • 如果多于5,更换多
  • 如果小于5,请更换少量
  • 如果是1,替换为“只有一个”

更换后,上面的句子是

    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;
    
    public class Main {
      public static void main(String[] args) {
        String regex = "\\\d+\";
        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());
      }
    }
    

上面的代码生成以下结果。

202104181127_1.png

点赞(0)
版权归原创作者所有,任何形式转载请联系作者; Java 技术驿站 >> Java 正则表达式查找/替换
上一篇
Java 正则表达式组
下一篇
java.lang.Class 类