2011-04-02 28 views
10

¿hay alguna manera de imprimir la parte de anticipación de un patrón de expresiones regulares en java?expresión regular de Java con 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()); 

este fragmento imprime:

hola
mundo
este
es

lo que quiero hacer es imprimir las palabras en forma de pares:

hola mundo
mundial este
este es
es ejemplo

¿cómo puedo hacer eso?

Respuesta

9

Usted puede poner simplemente la captura de paréntesis dentro de la expresión de búsqueda hacia delante:

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