java的正则表达式

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class DuplicateWords {

    public static void main(String[] args) {

        String regex = "\\b(\\w+)\\b(\\s+\\1\\b)+";
        Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);

        Scanner in = new Scanner(System.in);
        int numSentences = Integer.parseInt(in.nextLine());

        while (numSentences-- > 0) {
            String input = in.nextLine();

            Matcher m = p.matcher(input);

            // Check for subsequences of input that match the compiled pattern
            while (m.find()) {
                input = input.replaceAll(m.group(), m.group(1));
                /*this statement can't replace different case
                for example, Hello hello Ab ab aB
                the result is the same 
                while this input = input.replaceAll(regex, "$1"); can match all different words at once
                so Hello hello Ab ab aB in "input = input.replaceAll(m.group(), m.group(1));" need two steps
                while Hello Hello Ab Ab Ab in "input = input.replaceAll(regex, "$1");" need one step
                */
                //input = input.replaceAll(regex, "$1");
            }

            // Prints the modified sentence.
            System.out.println(input);
        }

        in.close();
    }
}

 

posted on 2025-08-28 18:00  emalovecode  阅读(14)  评论(0)    收藏  举报