javaregexregex-lookarounds

Java regular expression with lookahead


is there a way to print out lookahead portion of a regex pattern in 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());

this snippet prints out :

hello
world
this
is

what I want to do is printing the words as pairs :

hello world
world this
this is
is example

how can I do that?


Solution

  • You can simply put capturing parentheses inside the lookahead expression:

    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));