Expression régulière Java avec lookahead


Existe-t-il un moyen d'imprimer une partie lookahead d'un motif regex en java?

    String test = "hello world this is example";
    Pattern p = Pattern.compile("\\w+\\s(?=\\w+)");
    Matcher m = p.matcher(test);
    while(m.find())
        System.out.println(m.group());

Cet extrait s'imprime:

Bonjour
mondiale
ce
est

Ce que je veux faire, c'est imprimer les mots sous forme de paires:

Bonjour tout le monde
monde ce
ce est
est un exemple de

Comment puis-je faire cela?

Author: tchrist, 2011-04-02

1 answers

Vous pouvez simplement mettre des parenthèses de capture dans l'expression lookahead:

String test = "hello world this is example";
Pattern p = Pattern.compile("\\w+\\s(?=(\\w+))");
Matcher m = p.matcher(test);
while(m.find()) 
    System.out.println(m.group() + m.group(1));
 9
Author: Tim Pietzcker, 2011-04-02 14:17:08