2012-02-20 17 views
13

En mi proyecto de Android tengo una expresión regular y una cadena, en la que debería tener la expresión coincidente. El problema es que solo encontré un método matches(), que devuelve booleano. ¿Hay algo que devuelva solo la cadena coincidente (por ejemplo, si mi cadena es "ir a la tienda a las 12:00 p.m.", quiero verificar si hay una hora en esta cadena (en este ejemplo - "12 p.m."), si es - devolverlo)? Gracias de antemano.Expresión regular de Android - cadena de concordancia de retorno

Respuesta

29

debe obtener el grupo de captura que necesita. Lee this. Encontrarás una respuesta a tu pregunta.
Aquí hay un ejemplo simple para usted. Creo que lo entenderás.

Pattern p = Pattern.compile(".*?(\\d{2}(am|pm)).*"); 
Matcher m = p.matcher("go to the shop at 12pm"); 
if(m.matches()) 
    return m.group(1); 

Esto devolverá 12pm
En realidad se puede conseguir lo que quieres con una mejor manera.

Pattern p = Pattern.compile("\\d{2}(am|pm)"); 
Matcher m = p.matcher("go to the shop at 12pm"); 
if(m.find()) 
    return m.group(0); //or you can write return m.group(); result will be the same. 
+0

¡Esto es exactamente lo que necesito! Muchas gracias, @Ademiban! – lomza

+0

@ shift66 Hola, ¿puedes echarle un vistazo a esta pregunta? http://stackoverflow.com/questions/34938232/android-regex-passing-of-text-output-from-method-to-method –

Cuestiones relacionadas