domingo, 4 de abril de 2010

Expresiones regulares Uso en JAVA

Nuevamente Fabian Castro ha escrito un nuevo tutorial en su blog sobre expresiones regulares aplicado a JAVA, gracias a su infinita entrega y benevolencia me permitió colgarlo en este blog como recopilación de información.

JAVA + Expresiones regulares; lo prometido es deuda (eso es lo que enseñan los abuelos), en este post implementaremos las expresiones regulares en JAVA, la verdad es fácil, claro si ya sabemos cómo funcionan.


--


Expresiones regulares Uso en JAVA

JAVA + Expresiones regulares; lo prometido es deuda (eso es lo que enseñan los abuelos), en este post implementaremos las expresiones regulares en JAVA, la verdad es fácil, claro si ya sabemos cómo funcionan.

JAVA nos ofrece un paquete especial para el manejo de expresiones regulares el cual es
java.until.regex presentándose dos clases: Pattern y Matcher donde dichas clases son finales (final) y con método constructor privado (Private) por ende no se puede crear Objetos ni heredar de dichas clases… ¿Cómo?!! ¿No puedo crear objetos de estas clases? No, no puedes crear objetos ni heredar de estas clases, ahí es donde uno dice “que clases tan inservibles” pero no es así porque al no poder heredar de ellas no se pueden modificar sus funciones y así las clases sirven para lo que fueron hechas, además al no poder crear objetos ellas nos entregan un objeto estándar para la clasificación y uso de las Expresiones regulares.

Muy bien la clase
Pattern tiene un método que es: compile(String regex), este método recibe como parámetro un String el cual es la expresión regular con la que queremos validar nuestros datos, dicho método nos devuelve un objeto estándar de la clase Pattern usándolo de la manera que queramos.

Después de tener el objeto de la clase
Pattern, que es el que nos ayudara a contener el patrón, necesitamos la clase Matcher este compara los datos contra la expresión regular, para obtener el objeto de dicha clase se usa el método matcher(CharSequence input) cuyo parámetro es en pocas palabras un String el cual es el dato que se quiere validar, al tener ya el objeto que valida el patrón contra el dato, podemos usarlo de cualquier forma, para identificar si el dato coincide con el patrón se usa el método .find() que retorna un booleano pero dicho método se entiende mejor en la práctica.

Nota: el siguiente ejemplo esta desarrollado en Netbeans 6.8, los archivos podrán ser descargados en formato .java y en proyecto Netbeans.

El ejemplo está basado en la validación de un correo electrónico, creare un formulario JAVA (JFrame) el cual contendrá un campo de texto y un botón; no me extenderé mucho con la creación de botones y campos de texto dentro del formulario la idea principal es entender cómo se implementan las expresiones regulares, en un próximo tutorial profundizaremos sobre la interfaz grafica en java; para la creación del formulario usaremos el siguiente fragmento de código:


import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.regex.*;
import javax.swing.*;

public class Main extends JFrame {

JTextField texto;
JButton boton;

public Main(){
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setLayout(null);
this.setLocation(200, 200);
this.setSize(225,100);
texto = new JTextField();
texto.setLocation(10, 10);
texto.setSize(200, 20);
this.add(texto);
boton = new JButton();
boton.setLocation(60, 30);
boton.setSize(100, 30);
boton.setText("Validar");
boton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
validar(texto.getText());
}
});

this.add(boton);
}

private void validar(String dato){
}

public static void main(String[] args) {
new Main().setVisible(true);
}

}

Lo que nos interesa es que al pulsar el botón se ejecutara el método validar(String dato), en este momento dicho método se encuentra vacio, así que le daremos el código de la validación para que el método quede así:

private void validar(String dato){
Pattern pat = Pattern.compile("^[a-zA-Z0-9_-]{2,}@[a-zA-Z0-9_-]{2,}\\.[a-zA-Z]{2,4}(\\.[a-zA-Z]{2,4})?$");
Matcher mat = pat.matcher(dato);
if(mat.find()){
JOptionPane.showMessageDialog(null, "el texto escrito es un correo");
}else{
JOptionPane.showMessageDialog(null, "el texto escrito NO! es un correo");
}
}



Si señores la expresión regular que esta hay valida un correo, casualmente es la misma que usamos para el tutorial anterior y ahora expliquemos línea por línea:


Pattern pat = Pattern.compile("^[a-zA-Z0-9_-]{2,}@[a-zA-Z0-9_-]{2,}\\.[a-zA-Z]{2,4}(\\.[a-zA-Z]{2,4})?$");


Esta Línea de código Activa el patrón a usar; es decir compila la expresión regular para poderla usar.

Matcher mat = pat.matcher(dato);


Esta línea de código crea el objeto de la clase
Matcher para comparar el patrón con el dato que queremos validar, pero para que eso ocurra debemos usar el método find() de dicha clase así:

if(mat.find()){
JOptionPane.showMessageDialog(null, "el texto escrito es un correo");
}else{
JOptionPane.showMessageDialog(null, "el texto escrito NO! es un correo");
}


El método find() devuelve un booleano el cual es verdadero si el dato coincide con el patrón y un false en caso contrario.

Este es el Final del Tutorial, espero haya sido de gran utilidad para ud's y pronto tutoriales de como crear interfaz gráfica en JAVA

DESCARGABLES

Proyecto NEtBeans 6.8

Archivos .JAVA

Archivo ejecutable .JAR


1 comentario:

  1. Hola los archivos de ejemplo q subist esta cerrados o opera dejo de funcionar porfa podrias subirlos nuevamente

    ResponderEliminar