Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Prog ii excepciones_guia_04
1. Expresiones Regulares
Guía Nº 4
Validación
1
GUÍA Nº 4 EXPRESIONES REGULARES
IDENTIFICACIÓN DE LA ASIGNATURA
Facultad de Estudios a Distancia - FESAD ESCUELA: Ciencias Tecnológicas
Programa: Tecnólogo en programación de Sistemas Informáticos
Asignatura/Unidad: Programación ll
Nombre de la actividad: Expresiones complejas en Programación
Objetivo de la temática: Conocer la forma práctica de validar cadenas de caracteres,
para diferentes tipos datos de que ofrece java.
Docente-Tutor: Ing. Josué Nicolás Pinzón Villamil
Expresiones regulares
Objetivos Específicos
• Conocer las expresiones regulares y observar la utilidad que prestan a la hora de
validar los datos de una aplicación.
• Conocer la simbología que se utiliza para formar una expresión regular.
¿Qué es una expresión regular?
Una expresión regular, a menudo llamada también patrón, es un término que describe un conjunto
de cadenas sin enumerar sus elementos. Por ejemplo, el grupo formado por las cadenas Handel,
Händel y Haendel se describe mediante el patrón "H(a|ä|ae)ndel". La mayoría de las
formalizaciones proporcionan los siguientes constructores: una expresión regular es una forma de
representar a los lenguajes regulares (finitos o infinitos) y se construye utilizando caracteres del
2. Expresiones Regulares
Guía Nº 4
Validación
2
alfabeto sobre el cual se define el lenguaje. Específicamente, las expresiones regulares se
construyen utilizando los operadores unión, concatenación y clausura de Kleene1
.[1]
Para conocer más sobre este tema, leer en [1] donde se encuentra la nomenclatura para construir
una expresión regular.
Algunos ejemplos de expresiones regulares son:
[0-9] ó d Acepta solo caracteres que contengan números.
[A-Z] Acepta solo caracteres en mayúscula.
^w+([.-]?w+)*@w+([.-]?w+)*(.w{2,3})+$
Esta expresión es útil cuando se necesita validar el correo electrónico.
[a-zA-Z]+ [0-9] ó w Acepta solo caracteres alfanuméricos
Ahora se va a poner en práctica las expresiones regulares con el siguiente ejercicio:
Se desea desarrollar una aplicación donde se pueda evaluar una cadena de texto e indique si
pertenece a una determinada expresión regular, los patrones a utilizar son: tipo numérico,
alfabético, alfanumérico y validación de un correo electrónico.
Con base a lo anterior se obtiene los siguientes diagramas para el GUI y el negocio:
GUI
1
En lógica matemática y en ciencias de la computación, la clausura de Kleene (también llamada estrella Kleene
o cierre estrella) es una operación unaria que se aplica sobre un conjunto de cadenas de caracteres o un
conjunto de símbolos o caracteres (alfabeto), y representa el conjunto de las cadenas que se pueden formar
tomando cualquier número de cadenas del conjunto inicial, posiblemente con repeticiones, y
concatenándolas entre sí.[2]
3. Expresiones Regulares
Guía Nº 4
Validación
3
Negocio
class GUI
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial V
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial V
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial V
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial V
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial V
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial V
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial V
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial V
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial V
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial V
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial V
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial V
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial V
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial V
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial V
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial V
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial V
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial V
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial V
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial V
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial V
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial V
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial V
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial V
Eventos
+ ACEPTAR: String = "Aceptar" {readOnly}
+ ALFABETICA: String = "Alfabética" {readOnly}
+ ALFANUMERICA: String = "Alfanumérica" {readOnly}
+ CORREO: String = "e-mail" {readOnly}
+ LIMPIAR: String = "Limpiar" {readOnly}
+ NUMERICA: String = "Numérica" {readOnly}
- ventana: VentanaPrincipal
+ actionPerformed(ActionEvent) : void
+ Eventos(VentanaPrincipal)
PanelExpresion
- opciones: JRadioButton ([])
- textExpresionEvaluar: JTextField
+ getTextoEvaluar() : String
+ PanelExpresion(Eventos)
+ setTextoEvaluar(String) : void
VentanaPrincipal
- buttonAceptar: JButton
- buttonLimpiar: JButton
- eventos: Eventos
- expresion: Expresion
- panel: PanelExpresion
- titleExpresion: JLabel
+ activarAccionAlfabetica() : void
+ activarAccionAlfanumerica() : void
+ activarAccionCorreo() : void
+ activarAccionLimpiar() : void
+ activarAccionNumerica() : void
+ actualizarTitulo() : void
+ evaluarExpresion() : void
+ main(String[]) : void
+ VentanaPrincipal()
JPanel
JFrame
ActionListener
-ventana
-panel
-eventos
4. Expresiones Regulares
Guía Nº 4
Validación
4
Al realizar el código de la GUI se obtiene la siguiente ventana:
class negocio
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA
EA 8.0 Unregistered Trial Version EA 8.0 Unregistered Trial Version EA
Expresion
+ EXPRESION_ALFABETICA: String = "[a-zA-Z]" {readOnly}
+ EXPRESION_ALFANUMERICA: String = "[a-zA-Z]+[0-9]" {readOnly}
+ EXPRESION_CORREO: String = "^w+([.-]?... {readOnly}
+ EXPRESION_NUMERO: String = "[0-9]" {readOnly}
- tipo: int
+ TIPO_ALFABETICA: int = 0 {readOnly}
+ TIPO_ALFANUMERICA: int = 2 {readOnly}
+ TIPO_CORREO: int = 3 {readOnly}
+ TIPO_NUMERO: int = 1 {readOnly}
+ getTipo() : int
+ setTipo(int) : void
+ validarExpresion(String) : boolean
5. Expresiones Regulares
Guía Nº 4
Validación
5
La parte que realmente interesa es la del negocio donde se va explicar cómo se realizó el código.
Las siguientes imágenes muestra el desarrollo del diagrama de clases propuesto:
7. Expresiones Regulares
Guía Nº 4
Validación
7
Como se observa se decidió dividir en constantes los diferentes tipos de expresiones, de este modo
permite un manejo más eficiente a la hora de evaluar una cadena, por este motivo fue que se
escogió una estructura tipo swich, la cual permite seleccionar el código a utilizar según el cada caso
y depende de un numero de selección.
Por otro lado se va analizar cada una de las expresiones y como es su sintaxis:
Expresión alfabética: [a-zA-Z]+
Significa que cada carácter evaluado con esta expresión debe estar dentro del lenguaje para este
caso el lenguaje a seguir son las letras minúsculas de la a hasta z, mas las letras en mayúsculas de
la A hasta la Z. Esto es lo definido dentro de los corchetes cuadrado [], ahora el símbolo(+) significa
que puede evaluar más de una carácter es decir una cadena de caracteres.
Expresión Numérica: [0-9]+
Tomando el mismo principio que el anterior el lenguaje de esta expresión está definido entre los
números de 0 al infinito, pero enteros positivos.
Expresión Alfanumérica: [a-zA-Z]+ [0-9]+
Esta expresión une los lenguajes de la expresión alfabética y la numérica, pero con la condición que
la cadena a evaluar al menos el primer carácter de la cadena sea una letra y el segundo un número,
por ejemplo: a1, ea3, shfjkfsdgfhfj3, q325456346.
Expresión correo electrónico:
^w+([.-]?w+)*@w+([.-]?w+)*(.w{2,3})+$
Esta expresión es una combinación de la nomenclatura de las expresiones regulares para Java, esta
indica con (^) que necesariamente la cadena debe comenzar con caracteres alfanuméricos sin
importar su orden (w), el símbolo (+) carácter anterior uno o más veces, ahora [ .-]? Significa
que puede ir solo una vez, ya sea punto o guion, pero es opcional. Con respecto al paréntesis que
termina con * indica que ese tramo de expresión puede repetirse cero a n-veces, luego
encontramos el símbolode @ seguidodemás cadenas alfanuméricas y punto, en la parte de w{2,3}
está diciendo que esa parte de la cadena debe contener mínimo 2 y máximo 3 caracteres y por
último el símbolo de $ significa que es el final de la cadena.
8. Expresiones Regulares
Guía Nº 4
Validación
8
Entendiendo cómo funcionan las expresiones regulares, ahora observemos que métodos invoca
Java para evaluar las expresiones, existen dos formas de realizar esta validación la primera opción
la brinda un método de la clase String con el método matches (String par), que recibe como
parámetro el patrón con el cual se va a evaluar, para nuestro caso este fue el método utilizado. La
segunda opción es utilizar directamente la librerías Pattern y Matcher [3], visualicemos como
funciona estas dos librerías.
Primero importa las librerías.
Segundo crear los objetos de las dos clases como en el siguiente método:
10. Expresiones Regulares
Guía Nº 4
Validación
10
Bibliografía
[1] Expresión regular. (2020). Recuperado 29 March 2020, en
https://es.wikipedia.org/wiki/Expresi%C3%B3n_regular
[2] Clausura de Kleene. (2020). Recuperado 29 March 2020, en
https://es.wikipedia.org/wiki/Clausura_de_Kleene
[3] Java Platform SE 6. (2015). Recuperado 29 March 2020, en
https://docs.oracle.com/javase/6/docs/api/
[4] perfil, V. (2013). Validación con expresiones regulares y Javascript. Retrieved
29 March 2020, from http://maestrojavascript.blogspot.com/2013/10/validacion-
con-expresiones-regulares-y.html
11. Expresiones Regulares
Guía Nº 4
Validación
11
CONTROL DE CAMBIOS
Fecha Observación Autor
28/04/2020
Se crea guía Nº 4, sobre expresiones
regulares
Mg. Josué Nicolás
Pinzón Villamil