174 votes

Expression régulière pour les mots en double

Je suis un débutant en expression régulière, et je n'arrive pas à comprendre comment écrire une seule expression régulière qui "correspondrait" à n'importe quel mot consécutif en double tel que :

Paris au printemps.

Ce n'est pas lié.

Pourquoi tu rigoles ? Mes expressions régulières sont-elles SI mauvaises ? ?

Y a-t-il une seule expression régulière qui correspondra à TOUTES LES chaînes de caractères gras ci-dessus ?

226voto

Gumbo Points 279147

Essayez cette expression régulière :

\b(\w+)\s+\1\b

Ici, \b est une limite de mot et \1 la correspondance capturée du premier groupe.

Exemple Regex101 ici

31voto

Mike Viens Points 1084

Je crois que ce regex gère plus de situations :

/(\b\S+\b)\s+\b\1\b/

Une bonne sélection de chaînes de test peut être trouvée ici : http://callumacrae.github.com/regex-t Tuesday/challenge1.html

13voto

Faakhir Points 346

Essayez ceci avec ci-dessous RE

  • \b début de la limite des mots
  • \W+ tout caractère de mot
  • \1 mot identique correspond déjà
  • \b fin de mot
  • ()* Répétition à nouveau

    public static void main(String[] args) {
    
        String regex = "\\b(\\w+)(\\b\\W+\\b\\1\\b)*";//  "/* Write a RegEx matching repeated words here. */";
        Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE/* Insert the correct Pattern flag here.*/);
    
        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();
    }
    

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X