Bienvenidos sean a este post, hoy veremos una funcion de Java.
Esta funcion nos devuelve la primera posicion o indice de la coincidencia que busquemos. Esta devolvera todas aquellas que vaya encontrando y no finaliza con la primera encontrada, como sucede con otras funciones. Veamos como es su sintaxis:
objeto.start([int grupo]);
El objeto debe ser de tipo Matcher y lo aplicamos directamente. Mientras estemos buscando en la cadena nos ira devolviendo un valor entero que representa a la posicion o indice a la coincidencia del primer patron. De manera opcional podemos pasar a que grupo de patron de referencias usaremos para buscar las coincidencias. Este es un valor de tipo int, siendo el 1 para el primero, 2 para el segundo, y asi sucesivamente. Para entender como funciona, vamos a analizar el siguiente ejemplo:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegEx
{
private static String REGEX = "(a*b)(foo)";
private static String TEXTO = "aabfoomhmabfooabfoooabfoo";
public static void main(String[] args)
{
Pattern patron = Pattern.compile(REGEX);
Matcher buscador = patron.matcher(TEXTO);
int pos = 0;
while(buscador.find())
{
System.out.println("Pos #" + pos + " = " + buscador.start());
pos++;
}
}
}
Primero importamos las dos librerias que usaremos para poder trabajar con nuestro codigo. Antes del main definiremos dos objetos de tipo String, el primero sera para la expresion regular que usaremos como patron y el segundo sera el texto donde trabajaremos. En el main, primero crearemos un objeto de tipo Pattern que sera el patron de busqueda. Para ello, usamos a compile y le pasamos el texto que vamos a usar como patron y definimos anteriormente. El segundoo objeto es de tipo Matcher y es el que usaremos para buscar el patron. Para ello, usaremos al objeto y le aplicamos la funcion matcher y le pasamos el texto a analizar. Este se encargara de buscar el patron que pasamos en el texto. La siguiente variables es solo para indicar el orden de las posiciones de inicio y la incrementaremos en el siguiente bucle. En el bucle, tenemos un bucle que buscara mediante find en el objeto buscador. Mientras se hace el bucle, mostramos el resultado devuelto por la funcion aplicada a buscador. Observen a que objeto lo aplicamos, tiene que ser de tipo Matcher (como mencionamos antes) y este se genera como mostramos anteriormente. Compilemos y veamos como es la salida:
$ java RegEx
Pos #0 = 0
Pos #1 = 9
Pos #2 = 14
Pos #3 = 20
$
Observen todas las coincidencias que nos devolvio, todas representan a la primer posicion de la coincidencia del primer grupo que pasamos. Tomemos el codigo anterior, busquemos la siguiente linea:
System.out.println("Pos #" + pos + " = " + buscador.start());
Y la modificaremos de la siguiente manera:
System.out.println("Pos #" + pos + " = " + buscador.start(2));
En este caso, le indicamos que utilice al segundo grupo del patron que usamos para las coincidencias. El resto del codigo sigue siendo el mismo. Si compilamos y ejecutamos el nuevo codigo obtendremos la siguiente salida:
$ java RegEx
Pos #0 = 3
Pos #1 = 11
Pos #2 = 16
Pos #3 = 22
$
Como pueden ver, ahora tenemos otra posicion para las coincidencias,, si van a ver el texto de nuestro codigo nos daremos cuenta que ahora devuelve la posicion de foo. Espero se haya entendido para que sirve el uso del grupo.
En resumen, hoy hemos visto a start, que es, para que sirve, como se utiliza, y un ejemplo practico para poder verlo en accion. Espero les haya resultado de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donación
Es para mantenimento del sitio, gracias!
$1.50
