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:\n");
                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:\n");
                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