Java Regex 2 - Duplicate Words

Sort by

recency

|

353 Discussions

|

  • + 0 comments
    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+)(\\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));
                }
                
                // Prints the modified sentence.
                System.out.println(input);
            }
            
            in.close();
        }
    }
    
  • + 1 comment

    Yes I'm generating the expected ouput but test still fail

  • + 0 comments

    this is broken

  • + 0 comments

    String regex = "\b(\w+)(\b\W+\b\1\b)*"; Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); input = input.replaceAll("\b" + Pattern.quote(m.group()) + "\b", m.group(1));

    The Pattern.quote method quotes part of a regex pattern to make regex interpret it as string literals.

  • + 0 comments

    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+)(\\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(0),m.group(1))**;
            }
    
            // Prints the modified sentence.
            System.out.println(input);
        }
    
        in.close();
    }
    

    }