如何使用 Java 匹配正则表达式中的重复单词

问题描述

如何在正则表达式中匹配重复单词?

解决方案

以下示例显示如何使用 regex.Matcher 类的 p.matcher() 方法和 m.group() 方法在正则表达式中搜索重复单词。

import java.util.Scanner;
import java.io.*;
import java.util.regex.*;
import java.util.ArrayList;

public class dupl {
   public static void main(String[] args) {
      ArrayList <String> manyLines = new ArrayList<String>();
      ArrayList <String> noRepeat = new ArrayList<String>(); 
      try { 
         String s1 = "Hello hello Hello there there past pastures ";
         Scanner myfis = new Scanner(s1);
         while(myfis.hasNext()) { 
            String line = myfis.nextLine();
            String delim = System.getProperty("line.separator");
            String [] lines = line.split(delim);
            
            for(String s: lines) { 
               if(!s.isEmpty() && s != null) { 
                  manyLines.add(s);
               } 
            } 
         }
         if(!manyLines.isEmpty()) { 
            System.out.print("Original text is:
");
            for(String s: manyLines) { 
               System.out.println(s);
            } 
         } 
         if(!manyLines.isEmpty()) { 
            for(String s: manyLines) { 
               String result = s.replaceAll("(?i)\b([a-z]+)\b(?:\s+\1\b)+", "$1");
               noRepeat.add(result);
            } 
         } 
         if(!noRepeat.isEmpty()) { 
            System.out.print("After Remove duplicates:
");
            for(String s: noRepeat) { 
               System.out.println(s);
            } 
         } 
      } catch(Exception ex) { 
         System.out.println(ex);
      } 
   }
}

结果

上述代码示例将产生以下结果。

Original text is:
Hello hello Hello there there past pastures 
After Remove duplicates:
Hello there past pastures 
java_regular_exp.html