Lenguajes Automatas i

23
INSTITUTO TECNOLOGICO DE POCHUTLA LENGUAJES AUTÓMATAS I TEMA: *APLICACIÓN EN PROBLEMAS REALES. *ESTRUCTURA Y EJEMPLIFICACIÓN DE EXPRESIONES REGULARES EN C++,JAVA Y PHP INTEGRANTES: OLAY EDWIN MARTINEZ MTZ. BONIFACIO LÓPEZ MARTINEZ ESPERANZA MATEO JIMÈNEZ LUCINA JIJON CORTEZ JUAN C. MARTINEZ CONTRERAS FLAVIO PEDRO SANTIAGO

Transcript of Lenguajes Automatas i

Page 1: Lenguajes Automatas i

INSTITUTO TECNOLOGICO DE POCHUTLA

LENGUAJES AUTÓMATAS I

TEMA: *APLICACIÓN EN PROBLEMAS REALES.

*ESTRUCTURA Y EJEMPLIFICACIÓN DE EXPRESIONES REGULARES EN C++,JAVA Y PHP

INTEGRANTES:OLAY EDWIN MARTINEZ MTZ.BONIFACIO LÓPEZ MARTINEZ ESPERANZA MATEO JIMÈNEZLUCINA JIJON CORTEZJUAN C. MARTINEZ CONTRERAS FLAVIO PEDRO SANTIAGO

Page 2: Lenguajes Automatas i

APLICACIÓN DE PROBLEMAS REALES

En general las ER se asocian con los lenguajes regulares y están presentes en diversas aplicaciones, por ejemplo:Para descripción de patrones textuales:La mayoría de los procesadores de texto utilizan variantes de las ER para facilitar la búsqueda de palabras en un texto, como los “comodines ” del Word.

Page 3: Lenguajes Automatas i

PARA DESCRIBIR EL LÉXICO DE UN LENGUAJE DE PROGRAMACIÓN: Por ejemplo para el lenguaje c++:

Page 4: Lenguajes Automatas i

TELEFONO NACIONAL

• Ejemplo: 954556817 • Exp. Reg.: /^\d{9}$/ o también /^[0-9]{9}$/

FORMATO DE FECHA DD/MM/AAAA

• Ejemplo: 09/01/2006 • Exp. Reg.: /^\d{2}\/\d{2}\/\d{4}$/

CÓDIGO POSTAL

• Ejemplo: 41012 • Exp. Reg.: /^\d{5}$/

Page 5: Lenguajes Automatas i

Validar una URLExpresión útil si necesitas saber si una URL es válida./^(https?://)?([da-z.-]+).([a-z.]{2,6})([/w ?=.-]*)*/?$/

Email• Ejemplo: [email protected] • Exp. Reg.: /^(.+\@.+\..+)$/ Comprobar la seguridad de una contraseña (?=^.{8,}$)((?=.*d)|(?=.*W+))(?![.n])(?=.*[A-Z])(?=.*[a-z]).*$ Validar número de la tarjeta de crédito^((67d{2})|(4d{3})|(5[1-5]d{2})|(6011))(-?s?d{4}){3}|(3[4,7]) d{2}-?s?d{6}-?s?d{5}$

Page 6: Lenguajes Automatas i

SIGNIFICADO\sEspacio en blanco \tTabulador \nVuelta de carro +

Avance de línea \rVuelta de carro \0xxCaracter octal xx (i.e.

/\062/ para el caracter ASCII 50)

\xXXCaracter Hexadecimal XX (i.e. /\x1B/ para el caracter 27)

\cXCaracter Control+X (i.e. \cC para Ctrl-C)

\wCaracter de palabra (alfanumérico y "_")

\WCaracter que no es de palabra (todos menos alfanuméricos o "_")

\dDígito (0 a 9) \DCaracter que no es

Dígito (todos menos 0 al 9)

\bLimite de una palabra \A ^Principio de cadena (puede usarse indistintamente "^" o "\A" \Z $Fin de línea

Page 7: Lenguajes Automatas i

Por ejemplo, para reconocer los teléfonos que estén dados en alguno de los formatos:###-##-## o ###-#### o #####-## o #######, no admitiendo nada antes o después:/^\d(3)\-?\d(2)\-?d(2)$/Lo que, en castellano seria: Inicio de cadena, luego tres dígitos, uno o cero "-", dos dígitos, uno o cero "-", dos dígitos y final de la cadena.

Page 8: Lenguajes Automatas i

ESTRUCTURA Y EJE

MPLIFIC

ACIÓN

DE EXPRESIONES R

EGULARE EN C+

+,JAVA Y

PHP

Page 9: Lenguajes Automatas i

A partir del JDK 1.4 se incluye el paquete java.util.regexp para hacer uso de expresiones regulares en Java. El paquete está formado por dos clases, que explicaré a continuación, la clase Matcher y la clase Patterny por una excepción, PatternSyntaxException.

JAVA

Una expresión regular es un patrón que describe a un string. Recuerdo, que sin saberlo, escribía mis primeras primeras expresiones regulares en DOS, dir *.bmp, o del *.tmp o con en SQL “nombre Like ‘*ma*’” donde el asterisco significa cualquier representa cualquier secuencia de caracteres.

En Java: La clase Pattern representa una expresión regular La clase Matcher es un tipo de objeto que se crea mediante la

invocación del método Pattern.matcher.

Page 10: Lenguajes Automatas i

import java.util.regex.Matcher; import java.util.regex.Pattern; public class regexpjava { public static void main(String[] args) { Pattern pat=null; Matcher mat=null; String texto="<title>Hola soy el titulo</title>"; pat=Pattern.compile("<title>(.*?)</title>"); mat=pat.matcher(texto); System.out.println("Texto \t\t\t: "+texto); if(mat.find()){ System.out.println("Expresion regular \t: <title>(.*?)</title>"); System.out.println("Match! \t\t\t: "+mat.group(1)); } } }

Page 11: Lenguajes Automatas i

La salida es Quote

Texto : <title>Hola soy el titulo</title> Expresion regular : <title>(.*?)</title> Match! : Hola soy el titulo

Page 12: Lenguajes Automatas i

EXPRESIONES REGULARES C++.

Sintaxis HTML validador:id="Validador_id"runat="server"ControlToValidade="txtName"ErrorMessage="Mensaje de Error"Display="static|dynamic|none"Text="Texto a mostrar por el control" />

Page 13: Lenguajes Automatas i

APLICACIÓN.EL CÓDIGO DE REGEX EN GENERAL

PARA C# using System; using System.Text.RegularExpressions; public class Aplicacion { public static void Main () { // Definimos la expresion regular. Regex rx = new Regex(@"^-?\d+(\.\d{2})?$"); //

Definimos un arreglo con algunos caracteres de prueba string[] tests = {"-42", "19.99", "0.001", "100 USD“ }; // Los revisamos mediante un foreach foreach (string test in

tests) { if (rx.IsMatch(test)) { Console.WriteLine("Valido", test); } else { Console.WriteLine("Invalido", test); } } } }

Page 14: Lenguajes Automatas i

EN ESTE CASO EL PATRÓN COINCIDE YA QUE ES UN CARÁCTER QUE ESTÁ ENTRE LA H Y LA M, PERO SI EN CAMBIAMOS EL TEXTO POR HH, NO COINCIDIRÁ PORQUE EL PATRÓN INDIQUE SOLO BUSQUE UNA LETRA, NO VARIAS.BUSCAR

String patron = "[s]$"; //El ^ es que solo encuentre el primero de la cadena, $es solo el ultimo

Pattern p = Pattern.compile(patron);   String texto = "Estamos aprendiendo a usar

expresiones regulares"; Matcher matcher = p.matcher(texto);   while(matcher.find())

{ System.out.printf("Encontrado %s en %d y final en %d\n", matcher.group(),//patrón matcher.start(),//donde empieza la palabra encontrada matcher.end()); //donde acaba la palabra encontrada

}

Page 15: Lenguajes Automatas i

EXPRESIONES REGULARES EN PHP

Las expresiones regulares en PHP son una potente herramienta de programación que muchas veces se deja de lado ya que se cree que es muy compleja (aunque sí lo puede ser). En este post explicamos de manera sencilla cómo utilizar las expresiones regulares en PHP y brindamos soluciones a ejercicios cotidianos de programación utilizando expresiones regulares. También puede servir como un pequeño recordatorio.

Page 16: Lenguajes Automatas i

METACARACTERES. Match con cualquier caracter

^ Match al principio del string

$ Match al final del string

\s Match con cualquier espacio en blanco

\d Match con cualquier dígito

\D Match con cualquier caracter que no sea un dígito

\w

Match con cualquier caracter que pueda ser parte de una palabra (letra, número, guión bajo)

\W

Match con cualquier caracter que NO pueda ser parte de una palabra (letra, número, guión bajo)

\A Inicio de un string.

\z Final de un string.

Page 17: Lenguajes Automatas i

CUANTIFICADORES

* el caracter puede aparecer cero o mas veces.

+ el caracter puede aparecer una o mas veces.

? el caracter puede aparecer cero o una vez.

{n} el caracter aparece exactamente n veces.

{n,} el caracter aparece n o más veces.

{n,m} el caracter puede aparecer entre n y m veces.

Page 18: Lenguajes Automatas i

COMO PARTE DE LA NOTACION, SIEMPRE ENCERRAMOS LAS EXPRESIONES REGULARES ENTRE /, LLAVES ({}) O #. POR EJEMPLO, LA EXPRESION /AB?C/ HACE MATCH CON AC Y ABC. LA EXPRESIÓN REGULAR /AB{1,3}C/ HACE MATCH CON ABC, ABBCY ABBBC.

Agrupadores

[]

permiten agrupar creando rangos, por ejemplo /ab[0-5]+c/ hará match con cualquier string que contenga ab, una o más veces un número entre 0 y 5, y finalmente una c. Por ejemplo: ab12c.

()

Nos permiten crear sub-expresiones, expresiones regulares contenidas dentro de otras: /a(bc.)+e/. Tiene un uso especial en formas como (…), que permite capturar todo lo que encierren los paréntesis, y (a|b) que hace match con a o b

Page 20: Lenguajes Automatas i
Page 21: Lenguajes Automatas i
Page 22: Lenguajes Automatas i
Page 23: Lenguajes Automatas i

PATRON Una expresión regular es un conjunto de

caracteres que se lo conoce como "patrón".

Un ejemplo de patrón que suele estar en los textos que tocan el tema, es la búsqueda de un archivo desde linea de comando, por ejemplo:     ls m*.txt  ( o en DOS:  dir m*.txt)  :  este patrón busca todos los archivos que comienzan con la letra "m", continúan con cualquier carácter, y terminan con ".txt".