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

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

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

package com.yiibai;

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

public class SearchingDuplicateWords {
    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);
        }
    }
}

Java

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

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

原文地址:https://www.cnblogs.com/borter/p/9617144.html

时间: 2024-10-21 01:53:10

Java如何在正则表达式中匹配重复单词?的相关文章

Java 去除 ArrayList 集合中的重复元素

// One practice package Collection; import java.util.ArrayList; import java.util.Iterator; // 去除 ArrayList 集合中的重复元素 public class ArrayListTest { public static void sop(Object obj) { System.out.println(obj); } public static void main(String[] args) {

Java之——删除ArrayList中的重复元素的2种方法

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47414935 ArrayList是Java中最常用的集合类型之一.它允许灵活添加多个null元素,重复的元素,并保持元素的插入顺序.在编码时我们经常会遇 到那种必须从已建成的ArrayList中删除重复元素的要求.这篇文章将给出两种从ArrayList中删除重复元素的方法. 方法1:使用HashSet删除ArrayList中重复的元素 在该方法中,我们使用HashSet来删除重复

正则表达式中匹配单个字符

匹配单个字符. 匹配任意一个字符(除了\n)[] 匹配[]中列举的字符\d 匹配数字 0-9\D 匹配非数字\s 匹配空白,即空格\S 匹配非空白\w 匹配单词字符\W 匹配非单词字符 原文地址:https://www.cnblogs.com/liuxjie/p/12003232.html

正则表达式中\{\} --匹配模式出现的次数

正则表达式: \{\}    匹配字符出现的次数 使用*可匹配所有匹配结果人一次,但如果只要制定次数,就应该使用\{\},此模式有三种形式. pattern\{n\}         匹配模式出现n次 pattern\{n,\}        匹配模式出现最少n次 pattern\{n,m\}         匹配模式出现n到m次,n,m分别为0-255之间的任意整数 例: A\{2\}B      匹配值为AAB A\{4\}B        匹配值为AAAAB或者AAAAAAB,但是不能为A

Java移除字符串中的重复字符

基本的两种方法 1.使用正则表达式. public String removeDuplicateChars(String str) { return str.replaceAll("(?s)(.)(?=.*\\1)", ""); } (?s) 开启单行模式 dotall 让. 号匹配任意字符 (.) 任意字符 并捕获在第一组 (?=.*\1) 这是断言, 表示后面内容将是 任意个字符加上第一组所捕获的内容 这样子,如果这整个式子匹配到,表示,第一个捕获组内容在字符串

应用Java去除一维数组中的重复数字,且不借助任何java工具类。

昨天有个朋友突然问了我这个问题,一时我竟然无言以对,刚开始就是局限于没办法记录重复位置,作为刚刚接触java语言的菜鸟,绞尽脑汁地一最笨的方法实现了,还望大神指点出更好的方法. public class Test01 { public static void main(String[] args) { test1(); } /** * 方法名: test1 * 方法描述:一位数组去除重复的数字,不借助java工具类,方法比较笨拙,还请高手指点 * @param: Test01 * @return

java之坑-----List中的重复添加同一对象

java中List的add方法不检查List中是否含有已加入项 java中List的add方法不检查List中是否含有已加入项 java中List的add方法不检查List中是否含有已加入项 重要事情说三遍 List中添加的是引用,而且不检查是否已经加入list 这也就意味着:如果管理一堆循环使用的对象,对list的存放操作不应该是链式而应该是栈式,不然的话随着链的推进实际上可供使用的对象会被挤入垃圾堆然后被回收掉,列表看起来大小变化不大但是实际上只剩不多的实际引用对象,而对该对象的任何操作(如

Java 去除List列表中的重复项

/** * Remove list duplicate item * * @param srcList * @return */ private static ArrayList<ResolveInfo> removeListDuplicateItemWithOrder( List<ResolveInfo> srcList) { ArrayList<ResolveInfo> mResolveInfoList = new ArrayList<ResolveInfo&

关于 Java正则表达式中的Possessive数量修饰词的理解

关于 Java正则表达式中的Possessive数量修饰词的理解 正则表达式对于数量限定符如 ?, + , *, {n, m} 的匹配默认是贪婪模式,比如: a.*b   匹配 acbab 的结果是 acbab 而不是acb 正则表达式支持懒惰模式,也就是在数量限定符后加一个数量修饰词(quantifier),用问号表示, 比如: a.*?b 匹配 acbab 的结果是 acb 而不是acbab 而Java语言在正则表达式中支持一种Possessive 数量修饰词 ,用加号表示.其字面意思是像贪