2010-11-10 20 views
6

que tienen una expresión regular en Java:Java expresiones regulares: Acaba de obtener una parte del grupo de coincidencias

Pattern pattern = Pattern.compile(<string>text</string><string>.+</string>); 
Matcher matcher = pattern.matcher(ganzeDatei); 
while (matcher.find()) { 
    String string = matcher.group(); 
    ... 

Esto funciona bien, pero la salida es algo así como

<string>text</string><string>Name</string>

Pero acabo quiere esto: Name

¿Cómo puedo hacer esto?

Respuesta

19

captura el texto que desea devolver envolviéndolo en paréntesis, por lo que en este ejemplo, la expresión regular debe convertirse en

<string>text</string><string>(.+)</string> 

A continuación, se puede acceder al texto que coincide entre los paréntesis con

matcher.group(1) 

El método no-arg group al que llama, devuelve la parte completa del texto de entrada que coincide con su patrón, mientras que solo quiere una subsecuencia de eso, que coincide con un grupo de captura (el paréntesis).

+0

maldita, que eran más rápidos (1) –

+0

gracias mucho :) – Tobias

5

Luego de hacer esto:

Pattern pattern = Pattern.compile(<string>text</string><string>(.+)</string>); 
     Matcher matcher = pattern.matcher(ganzeDatei); 
     while (matcher.find()) { 
      String string = matcher.group(1); 
      ... 

Referencia:

-2

Debe poner el texto que desea obtener por group() entre paréntesis. A fin de utilizar:

<string>(.+)</string> 
Cuestiones relacionadas