如何使用 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