Sunteți pe pagina 1din 15

Introduccin a la Teora de autmatas

Objetivos del captulo I


1.- Conocer y comprender La teora de autmatas. 2.- Conocer el Vocabulario Tcnico. 3.- Concepto de Autmata finito determinista (AFD) 4.- Concepto de Extensiones a los autmatas finitos 5.- Comprender y entender la Mquina de Turing

Introduccin a la Teora de autmatas


La teora de autmatas es una rama de las ciencias de la computacin que estudia de manera abstracta y con problemas que stas son capaces de resolver. La teora de autmatas est estrechamente relacionada con la teora del lenguaje formal ya que los autmatas son clasificados a menudo por la clase de lenguajes formales que son capaces de reconocer. El Dr. Frank Sinphilin es considerado el padre de los autmatas y uno de los mayores precursores de la computacin y su destacada investigacin en el desarrollo de modelos matemticos apropiados para la comprensin de fenmenos de modelacin instrumental, puesto que al tener una discapacidad motriz a falta de un miembro corporal (el cual no es especificado en los textos), el comienza a idear mtodos y tcnicas que le ayuden a tener una vida normal a razn de dicha discapacidad y vive enclaustrado y desarrollando modelos adecuados para dar inicio al primer lenguaje basado en razonamiento autodidacta, este lenguaje fue llamado TOPIT.OS, el cual evolucion hasta los lenguajes que hoy en da se conocen. Un autmata es un modelo matemtico para una mquina de estado finita (FSM sus siglas en ingls). Una FSM es una mquina que, dada una entrada de smbolos, "salta" a travs de una serie de estados de acuerdo a una funcin de transicin (que puede ser expresada como una tabla). En la variedad comn "Mealy" de FSMs, esta funcin de transicin dice al autmata a que estado cambiar dados un determinado estado y smbolo. La entrada es leda smbolo por smbolo, hasta que es "consumida" completamente (piense en esta como una cinta con una palabra escrita en ella, que es leda por una cabeza lectora del autmata; la cabeza se mueve a lo largo de la cinta, leyendo un smbolo a la vez) una vez la entrada se ha agotado, el autmata se detiene. Dependiendo del estado en el que el autmata finaliza se dice que este ha aceptado o rechazado la entrada. Si este termina en el estado "acepta", el autmata acepta la palabra. Si lo hace en el estado "rechaza", el autmata rechaz la palabra, el conjunto de todas las palabras aceptadas por el autmata constituyen el lenguaje aceptado por el mismo.

Vocabulario tcnico
Los conceptos bsicos de smbolos, palabras, alfabetos y strings son comunes en la mayora de las descripciones de los autmatas. Estos son: Smbolo

Un dato arbitrario que tiene algn significado a o efecto en la mquina. A estos smbolos tambin se les llama "letras" o "tomos".[1] Palabra Una cadena finita formada por la concatenacin de un nmero de smbolos. Alfabeto Conjunto finito de smbolos. Un alfabeto se indica normalmente con , que es el conjunto de letras en un alfabeto. Lenguaje Un conjunto de palabras, formado por smbolos en un alfabeto dado. Puede o no puede ser infinito.

Clausura de Kleene
Un lenguaje se puede considerar como un subconjunto de todas las posibles palabras. El conjunto de todas las palabras puede, a su vez, ser considerado como el conjunto de todas las posibles concatenaciones de cadenas. Formalmente, este conjunto de todas las cadenas se llama en ingls free monoid. Se indica como * , y el superndice * se llama la estrella de Kleene.

Autmatas finitos
Formalmente, un autmata . finito (AF) puede ser descrito como una 5-tupla

Existen tres tipos de autmatas finitos - Autmata Finito Determinstico (AFD)


Cada estado de un autmata de este tipo tiene una transicin por cada smbolo del alfabeto.

- Autmata finito no determinista (AFND)


Los estados de un autmata de este tipo pueden, o no, tener una o ms transiciones por cada smbolo del alfabeto. El autmata acepta una palabra si existe al menos un camino desde el estado q0 a un estado final F etiquetado con la palabra de entrada. Si una transicin no est definida, de manera que el autmata no puede saber cmo continuar leyendo la entrada, la palabra es rechazada.

Autmata finito no determinista con transiciones (AFND-)

Adems de ser capaz de alcanzar ms estados leyendo un smbolo, permite alcanzarlos sin leer ningn smbolo. Si un estado tiene transiciones etiquetadas con , entonces el AFND puede encontrarse en cualquier de los estados alcanzables por las transiciones , directamente o a travs de otros estados con transiciones . El conjunto de estados que pueden ser alcanzados mediante este mtodo desde un estado q, se denomina la clausura de q. Sin embargo, puede observarse que todos estos tipos de autmatas pueden aceptar los mismos lenguajes. Siempre se puede construir un AFD que acepte el mismo lenguaje que el dado por un AFND.

AFND con transiciones vacas.

Extensiones a los autmatas finitos


Los lenguajes aceptados por los autmatas descritos ms arriba se denominan lenguajes regulares. Autmatas ms potentes pueden aceptar lenguajes ms complejos.

Algunos de estos autmatas son:


Autmata con pila
Son mquinas idnticas a los AFD (o AFI), exceptuando el hecho de que disponen de una memoria adicional, haciendo uso de una pila. La funcin de transicin ahora depender tambin de los smbolos que se encuentren al principio de la pila. Esta funcin determinar como cambia la pila en cada transicin. Este tipo de autmatas aceptan los lenguajes independientes del contexto.

Autmata linealmente acotado


Se trata de una mquina de Turing limitada.

La Mquina de Turing
La mquina de Turing es una caja negra (tan simple como una mquina de escribir y tan compleja como un ser humano) capaz no slo de leer y escribir un alfabeto de smbolos finito a partir de una cantidad finita pero muy grande de cinta de papel, sino de modificar su propia configuracin o "estado mental". La mquina de Turing se convirti en un instrumento ideal para probar si un procedimiento es efectivamente computable o no.

Funcionamiento
Una mquina de Turing es un dispositivo que transforma un INPUT en un OUTPUT despus de algunos pasos. Consiste en una cabeza de lectura/escritura que examina una dimensin posiblemente infinita de una cinta bidireccional dividida en cuadros cada uno de los cuales est identificado con un 0 o un 1. Para llevar a cabo algn algoritmo, la mquina se inicializa en algn estado interno arbitrario. A continuacin, se pone en marcha y la mquina lee el bit que se encuentra en ese momento en su interior y ejecuta alguna operacin con ese bit (lo cambia o no, dependiendo de su estado interno). Despus se mueve hacia la derecha o hacia la izquierda, y vuelve a procesar el siguiente bit de la misma manera. Al final se para, dejando el resultado al lado izquierdo

Por ejemplo.
Una instruccin tpica podra ser: 01->11011i La traduccin es como sigue: si la mquina se encuentra en el estado interno 0 y lee 1 en la cinta, entonces pasar al estado interno 1101 (13), escribir 1 y se mover hacia la izquierda un paso (la cinta se mover hacia la derecha). A continuacin es conveniente inventar una notacin para la secuencia del INPUT. Esta notacin se llama notacin binaria expandida. Consiste en cambiar la secuencia original binaria por otra construida de la siguiente forma: el 0 se cambia por 0 y el 1 por 10 y se ponen un cero a la izquierda y/o a la derecha del resultado si empieza o acaba en 1 respectivamente.

As por ejemplo, el nmero 13 que en binario es 1101 es en binario expandido 1010010 con un cero delante por esta ltima regla 01010010. Para volver al original hay que contraer el binario expandido con la siguiente regla: Empezamos a leer por la izquierda el binario expandido. Cuando encontremos un 0 tomamos nota de cuntos 1 hay hasta llegar al siguiente 0 y lo escribimos. Si encontramos que hay dos 0 seguidos, apuntaramos un 0 porque no habra ningn 1. Con el 13 se hara: el primer 0 se encuentra en la primera posicin y el siguiente 0 est en la posicin 3. Entre los dos solo hay un 1. Lo anotamos. Seguidamente hay un 1, y despus un 0, entonces apuntamos 1 porque hay un 1 entre medias de ellos. Esto es lo que se hace sucesivamente y encontramos: 1101 que es el nmero original. Cualquier funcin que pueda ser considerada de "modo natural" como computable puede ser computada por una mquina universal de Turing. Si bien la conjetura no ha podido ser demostrada, hasta el momento ha resistido todos los intentos de encontrar un contraejemplo. Compatibilidad y no Computabilidad Una de las cuestiones ms estudiadas en la teora de la computabilidad ha sido la posibilidad de construir algoritmos que nos determinen si un determinado algoritmo posee o no una determinada propiedad. En un principio se fueron obteniendo demostraciones individuales de la no computabilidad de cada una de estas cuestiones, de forma que se tena la sensacin de que casi cualquier pregunta interesante acerca de algoritmos era no computable. A pesar de esto, y como consecuencia de la existencia de un programa universal hay otras muchas cuestiones interesantes que se han demostrado computables. El identificar los problemas que son computables y los que no lo son tiene un considerable inters, pues indica el alcance y los lmites de la computabilidad, y as demuestra los lmites tericos de los ordenadores. Adems de las cuestiones sobre algoritmos, se han encontrado numerosos problemas menos "generales" que han resultado ser no computables. Como Ejemplo citamos: Dcimo problema de Hilbert. Una ecuacin diofntica es la ecuacin de los ceros enteros de un polinomio con coeficientes enteros. Se pregunta si hay un procedimiento efectivo que determine si una ecuacin diofntica tiene o no solucin. Por otro lado, son muchos los problemas interesantes que se han demostrado computables. Todas las funciones construidas por recursividad primitiva o minimalizacin a partir de funciones calculables resultan ser calculables como consecuencia de los trabajos de Church y Turing.

Tesis de Church-Turing
Existe un obstculo importante al probar que no existe un algoritmo para una tarea especfica. Primero es necesario saber con exactitud qu significa algoritmo. Cada uno de los matemticos mencionados anteriormente haba superado este obstculo, definiendo "algoritmo" de una manera diferente. Gdel defini un algoritmo con una secuencia de reglas para formar funciones matemticas complicadas a partir de funciones matemticas ms simples. Church utiliz un formalismo denominado calculo lambda, mientras que Turn emple su mquina y defini un algoritmo como cualquier conjunto de instrucciones para su mquina simple. Si algo puede calcularse a partir de un algoritmo definido de una forma, entonces tambin puede calcularse a partir de un algoritmo definido en cualquiera de las otras formas. Conforme los investigadores se dieron cada vez ms cuanta de esta equivalencia en la dcada de 1930, se crey en forma amplia en las dos proposiciones que siguen: Todas las definiciones razonables de algoritmos conocidas hasta el momento son equivalentes. Cualquier definicin razonable de algoritmo que se llegue a dar, a su vez ser equivalente a definiciones ya conocidas.

Estas creencias han llegado a denominarse Tesis Church-Turing en honor a dos de los primeros trabajadores que se dieron cuenta de la naturaleza fundamental del concepto que haban definido juntos. Hasta el momento, no ha surgido evidencia en contra y se acepta ampliamente la Tesis de Church-Turing.

Autmatas Finitos
Definicin.
En primer lugar, vamos a definir lo que se entiende por autmata finito. Una posible definicin de autmata finito es la siguiente:

Un autmata finito es un vector de tres elementos:


M = (I,S,, F) donde I es el conjunto finito de entradas, S es el conjunto finito de estados (no vaco), es la funcin de transicin de estados y F es el conjunto finito de estados finales (incluidos en S).

Autmata Finito
Un autmata finito (AF) o mquina de estado finito es un modelo matem tico que realiza cmputos en forma automtica sobre una entrada para producir una salida.

Este modelo est conformado por un alfabeto, un conjunto de estados y un conjunto de transiciones entre dichos estados. Su funcionamiento se basa en una funcin de transicin, que recibe en un estado inicial una cadena de caracteres pertenecientes al alfabeto (la entrada), y que va leyendo dicha cadena a medida que el autmata se desplaza de un estado a otro, para finalmente detenerse en un estado final o de aceptacin, que representa la salida. El hecho de que todos los conjuntos sean finitos, le otorga a este elemento el atributo de finito. Tambin se puede desprender de la definicin que un autmata finito es un tipo especial de mquina secuencial, en la cual no existen seales de salida como tal sino que slo hay seales de entrada y estado, como suceda en la mquina de Moore. Debido a este motivo, las mquinas secuenciales cumplen todos los axiomas de los autmatas finitos. Siendo sta la razn por la cual empezaremos el estudio de la teora desarrollada alrededor de los autmatas finitos. Al igual que en las mquinas secuenciales, la representacin de los autmatas finitos puede llevarse a cabo de dos formas diferentes: mediante un diagrama de estados; o mediante una tabla de estados.

Diagramas de Estado.
En los diagramas de estado podemos encontrar dos elementos: estados y transiciones. Los estados son las letras o smbolos enmarcados (dentro de un crculo generalmente). En cambio, las transiciones son arcos dirigidos que llevan asociadas una/s etiquetas. Los estados se pueden definir como las posibles situaciones a las que puede llegar el autmata que estemos describiendo. Dentro de estos estados podemos distinguir entre estados estables y estados inestables. Cuando existe alguna transicin para la cual se llega al mismo estado desde el que se parte, se dice que es un estado estable. Mientras que si no existe ninguna transicin que cumpla la condicin anterior, se dice que es un estado inestable. En el caso de la mquina de ventas de refresco, los posibles estados pueden ser: No hay dinero en el interior de la mquina Existe el dinero suficiente para sacar un refresco En el interior de la mquina estn cada una de las cantidades permitidas. Por ejemplo si slo se admiten monedas de 10, 20 y 50 c., el refresco cuesta 60 c. y no se devuelve dinero, las cantidades pueden ser 10, 20, 30, 40, 50 y 60 c.

Las transiciones correspondern a los eventos en las entradas que producirn los cambios de estado en el sentido de la flecha del arco.

El cambio de estado se producir si la condicin de entrada coincide con la etiqueta asociada a dicha transicin. De nuevo, en el caso de la mquina de refresco, las posibles condiciones de entrada podran ser: Introducir las diferentes monedas permitidas: 10, 20 y 50 c. Pulsar el botn para obtener el refresco. As pues, una posible parte del diagrama del autmata se puede ver en la figura 2.1:

Figura 2.1.- Porcin del diagrama de estado correspondiente a la mquina de refresco.

Dicha porcin del diagrama se leera del siguiente modo: Si no hay dinero almacenado en la mquina (estado de 0c.) e introducimos una moneda de 10 c. (evento), pasaremos a la situacin de tener almacenado 10 c. (estado de 10c.)... Si realizamos la descripcin a travs de la tabla de estado, la porcin anterior del diagrama se mostrara en la tabla 2.1.

Tabla 2.1. Porcin de la tabla de estado correspondiente a la mquina de refresco. Por lo tanto, un posible diagrama de estado para la mquina de refresco se muestra en la figura 2.2. Tabla 2.1. Porcin de la tabla de estado correspondiente a la mquina de refresco. Por lo tanto, un posible diagrama de estado para la mquina de refresco se muestra en la figura 2.2. En este diagrama distinguimos 8 situaciones posibles: cada una de las cantidades que se pueden almacenar segn las monedas aceptadas (0, 10, 20, 30, 40, 50 y 60 c.); y una situacin en la que ya es posible dar el refresco.

Los eventos involucrados en dicha mquina sern la insercin de cada una de las monedas (10, 20 y 50 c.), y pulsar el botn de refresco. Las transiciones de estado son las siguientes: Cuando introduzcamos una moneda, pasaremos al estado con la cantidad actualizada; pero en el caso de que sobrepasemos la cantidad del refresco, nos quedaremos en los 60 c. ya que no se devuelve cambio y no es necesario almacenar dicha cantidad superior. Cuando pulsemos el botn de refresco, B, no suceder nada a menos que nos encontremos en el estado de 60 c., en cuyo caso se dar el refresco.

Figura 2.2.- Diagrama de estado correspondiente a la mquina de refresco.

Teoremas y Definiciones.
Como nuestro inters est centrado en el anlisis y diseo, vamos a orientar los teoremas y definiciones de la teora de autmatas finitos hacia los sistemas secuenciales. Una vez realizada esta aclaracin, en esta teora encontramos las siguientes definiciones:

Equivalencia: Una mquina M es equivalente a otra M*, si para cualquier secuencia de entrada es posible encontrar algn estado inicial tal que la secuencia de salida sea la misma. Esta relacin es denotada por M = M*. Compatibilidad: Una mquina M es compatible con otra M*, si para cualquier secuencia de entrada es posible encontrar un estado inicial tal que la secuencia de salida sea la misma, siempre y cuando sta est especificada. Esta relacin se denota por M ~ M*.

Mquina completamente especificada:


Es una mquina en la cual no existe ningn estado total para los que no est especificada la funcin de prximo estado y/o de salida. En caso contrario, se dice que la mquina est incompletamente especificada. A continuacin vamos a poner ejemplos de mquinas completas e incompletas. Una primera mquina podra ser la siguiente: A travs de una lnea serie va llegando bits, se desea realizar una mquina que indique la llegada de la secuencia 1 -> 0 -> 1. En esta mquina, la seal de entrada es la lnea serie mencionada anteriormente, con las posibles combinaciones de 1 y 0. Como ambas combinaciones son posibles, no podemos encontrar ninguna situacin de no especificacin. Por lo tanto, la mquina ser completamente especificada, ya que tanto la salida como los prximos estados debern estar especificados para todas las secuencias de entradas.

La segunda mquina podra ser la descrita a continuacin:


La figura 2.3 muestra el esquema de una mquina trituradora. La mquina es cuestin debe gobernar los motores de trituracin segn las siguientes especificaciones: cuando no exista nada que triturar, los motores deben estar apagados; cuando la mquina est llena, ambos Motores deben estar funcionando; cuando la mquina est medio vaca, slo debe funcionar un motor, y en particular aquel que en el estado anterior estuviera apagado (con el fin de garantizar una mayor vida activa de ambos motores).

Figura 2.3.- Esquema de una mquina trituradora. Esta mquina es un ejemplo claro de mquina incompleta ya que los sensores de presencia S1 y S2 nunca pueden tener la combinacin S1 S2 = 1 0, ya que es fsicamente imposible. Por lo tanto, para esta combinacin de entrada, ni la salida ni el prximo estado estarn especificado porque no importar cuales sean al no llegar nunca dicha combinacin.

No obstante, podemos encontrarnos mquinas en los que la salida s estar especificada pero el prximo estado no, y viceversa. Segn las definiciones de compatibilidad y de equivalencia, se comprueba el siguiente teorema: Teorema 1. Se verifica que si las mquinas M y M* estn especificadas de forma: completa: M = M* <=> M ~ M* Incompleta: M = M* => M ~ M*

Demostracin:
De las definiciones de equivalencia y compatibilidad se desprende que la primera engloba a la segunda por lo que la direccin hacia la derecha de las implicaciones queda demostrada. En cuanto a la direccin de la izquierda, slo se puede verificar a priori cuando las dos definiciones sean iguales, caso que slo se puede dar cuando se trata de mquinas completamente especificadas.

Expresiones regulares y lenguajes


Una expresin regular, a menudo llamada tambin patrn, es una expresin que describe un conjunto de cadenas sin enumerar sus elementos. Por ejemplo, el grupo formado por las cadenas Handel, Hndel y Haendel se describe mediante el patrn "H(a||ae)ndel". La mayora de las formalizaciones proporcionan los siguientes constructores: Una expresin regular es una forma de representar a los lenguajes regulares (finitos o infinitos) y se construye utilizando caracteres del alfabeto sobre el cual se define el lenguaje. Especficamente, las expresiones regulares se construyen utilizando los operadores unin, concatenacin y clausura de Kleene. Alternacin Una barra vertical separa las alternativas. Por ejemplo, "marrn|castao" casa con marrn o castao. Cuantificacin Un cuantificador tras un carcter especifica la frecuencia con la que ste puede ocurrir. Los cuantificadores ms comunes son +, ? y *: + El signo ms indica que el carcter al que sigue debe aparecer al menos una vez. Por ejemplo, "ho+la" describe el conjunto infinito hola, hoola, hooola, hoooola, etctera. ? El signo de interrogacin indica que el carcter al que sigue puede aparecer como mucho una vez. Por ejemplo, "ob?scuro" casa con oscuro y obscuro. * El asterisco indica que el carcter al que sigue puede aparecer cero, una, o ms veces. Por ejemplo, "0*42" casa con 42, 042, 0042, 00042, etctera.

Agrupacin
Los parntesis pueden usarse para definir el mbito y precedencia de los dems operadores. Por ejemplo, "(p|m)adre" es lo mismo que "padre|madre", y "(des)?amor" casa con amor y con desamor. Los constructores pueden combinarse libremente dentro de la misma expresin, por lo que "H(ae?|)ndel" equivale a "H(a|ae|)ndel". La sintaxis precisa de las expresiones regulares cambia segn las herramientas y aplicaciones consideradas, y se describe con ms detalle a continuacin. Su utilidad ms obvia es la de describir un conjunto de cadenas, lo que resulta de utilidad en editores de texto y aplicaciones para buscar y manipular textos. Muchos lenguajes de programacin admiten el uso de expresiones regulares con este fin. Por ejemplo: Perl tiene un potente motor de expresiones regulares directamente incluido en su sintaxis. Las herramientas proporcionadas por las distribuciones de Unix (incluyendo el editor sed y el filtro grep) fueron las primeras en popularizar el concepto de expresin regular.

Aplicaciones
Numerosos editores de texto y otras utilidades utilizan expresiones regulares para buscar y reemplazar patrones en un texto y reemplazar.

Las expresiones regulares en programacin


En el rea de la programacin las expresiones regulares son un mtodo por medio del cual se pueden realizar bsquedas dentro de cadenas de caracteres. Sin importar si la bsqueda requerida es de dos caracteres en una cadena de 10 o si es necesario encontrar todas las apariciones de un patrn definido de caracteres en un archivo de millones de caracteres, las expresiones regulares proporcionan una solucin para el problema. Adicionalmente, un uso derivado de la bsqueda de patrones es la validacin de un formato especfico en una cadena de caracteres dada, como por ejemplo fechas o identificadores. Para poder utilizar las expresiones regulares al programar es necesario tener acceso a un motor de bsqueda con la capacidad de utilizarlas. Es posible clasificar los motores disponibles en dos tipos: Motores para el programador y Motores para el usuario final. Motores para el usuario final: son programas que permiten realizar bsquedas sobre el contenido de un archivo o sobre un texto extrado y colocado en el programa. Estn diseados para permitir al usuario realizar bsquedas avanzadas usando este mecanismo, sin embargo es necesario aprender a redactar expresiones regulares adecuadas para poder utilizarlos eficientemente.
stos son algunos de los programas disponibles: grep: programa de los sistemas operativos Unix/Linux PowerGrep: versin de grep para los sistemas operativos Windows RegexBuddy: ayuda a crear las expresiones regulares en forma interactiva y luego le permite al usuario usarlas y guardarlas.

EditPad Pro: permite realizar bsquedas con expresiones regulares sobre archivos y las muestra por medio de cdigo de colores para facilitar su lectura y comprensin.

Motores para el programador:


Permiten automatizar el proceso de bsqueda de modo que sea posible utilizarlo muchas veces para un propsito especfico. Estas son algunas de las herramientas de programacin disponibles que ofrecen motores de bsqueda con soporte a expresiones regulares: Java: existen varias bibliotecas hechas para java que permiten el uso de RegEx, y Sun planea dar soporte a estas desde el SDK JavaScript: a partir de la versin 1.2 (ie4+, ns4+) JavaScript tiene soporte integrado para expresiones regulares. Perl: es el lenguaje que hizo crecer a las expresiones regulares en el mbito de la programacin hasta llegar a lo que son hoy en da. PCRE: biblioteca de ExReg para C, C++ y otros lenguajes que puedan utilizar bibliotecas dll (Visual Basic 6 por ejemplo). PHP: tiene dos tipos diferentes de expresiones regulares disponibles para el programador, aunque la variante POSIX (ereg) va a ser desechada en PHP 6. Python: lenguaje de "scripting" popular con soporte a Expresiones Regulares. .Net Framework: provee un conjunto de clases mediante las cuales es posible utilizar expresiones regulares para hacer bsquedas, reemplazar cadenas y validar patrones.

OBS: De las herramientas mencionadas con anterioridad se utilizan el EditPad Pro y el .Net Framework para dar ejemplos, aunque es posible utilizar las expresiones regulares con cualquier combinacin de las herramientas mencionadas. Aunque en general las Expresiones Regulares utilizan un lenguaje comn en todas las herramientas, las explicaciones prcticas acerca de la utilizacin de las herramientas y los ejemplos de cdigo deben ser interpretados de forma diferente. Tambin es necesario hacer notar que existen algunos detalles de sintaxis de las expresiones regulares que son propietarios del .Net Framework que se utilizan en forma diferente en las dems herramientas de programacin. Cuando estos casos se den se har notar en forma explcita para que el lector pueda buscar informacin respecto a estos detalles en fuentes adicionales. En el futuro se incluirn adicionalmente ejemplos de otras herramientas y lenguajes de programacin. Expresiones regulares como lenguaje Para especificar opciones dentro del texto a buscar se utiliza un lenguaje o convencin mediante el cual se le transmite al motor de bsqueda el resultado que se desea obtener. Este lenguaje le da un significado especial a una serie de caracteres. Por lo tanto cuando el motor de bsqueda de expresiones regulares encuentre estos caracteres no los buscar en el texto en forma literal, sino que buscar lo que los caracteres significan.

A estos caracteres se les llama algunas veces "meta-caracteres". A continuacin se listan los principales meta-caracteres y su funcin y como los interpreta el motor de expresiones regulares.

Descripcin de las expresiones regulares


El Punto "." El punto es interpretado por el motor de bsqueda como cualquier otro carcter excepto los caracteres que representan un salto de lnea, a menos que se le especifique esto al motor de Expresiones Regulares. En la herramienta EditPad Pro esto se hace por medio de la opcin "punto corresponde a nueva lnea" en las opciones de bsqueda. En .Net Framework se utiliza la opcin RegexOptions. Singleline al efectuar la bsqueda o crear la expresin regular. La barra inversa o contrabarra "\" Se utiliza para "marcar" el siguiente carcter de la expresin de bsqueda de forma que este adquiera un significado especial o deje de tenerlo. O sea, la barra inversa no se utiliza nunca por s sola, sino en combinacin con otros caracteres. Al utilizarlo por ejemplo en combinacin con el punto "\." este deja de tener su significado normal y se comporta como un carcter literal. De la misma forma, cuando se coloca la barra inversa seguida de cualquiera de los caracteres especiales que discutiremos a continuacin, estos dejan de tener su significado especial y se convierten en caracteres de bsqueda literal. Como ya se mencion con anterioridad, la barra inversa tambin puede darle significado especial a caracteres que no lo tienen. A continuacin hay una lista de algunas de estas combinaciones: \t Representa un tabulador. \r Representa el "retorno de carro" o "regreso al inicio" o sea el lugar en que la lnea vuelve a iniciar. \n Representa la "nueva lnea" el carcter por medio del cual una lnea da inicio. Es necesario recordar que en Windows es necesaria una combinacin de \r\n para comenzar una nueva lnea, mientras que en Unix solamente se usa \n. \a Representa una "campana" o "beep" que se produce al imprimir este carcter. \e Representa la tecla "Esc" o "Escape" \f Representa un salto de pgina \v Representa un tabulador vertical \x Se utiliza para representar caracteres ASCII o ANSI si conoce su cdigo. De esta forma, si se busca el smbolo de derechos de autor y la fuente en la que se busca utiliza el conjunto de caracteres Latin-1 es posible encontrarlo utilizando "\xA9". \u Se utiliza para representar caracteres Unicode si se conoce su cdigo. "\u00A2" representa el smbolo de centavos. No todos los motores de Expresiones Regulares soportan Unicode. El .Net Framework lo hace, pero el EditPad Pro no, por ejemplo.

\d Representa un dgito del 0 al 9. \w Representa cualquier carcter alfanumrico. \s Representa un espacio en blanco. \D Representa cualquier carcter que no sea un dgito del 0 al 9. \W Representa cualquier carcter no alfanumrico. \S Representa cualquier carcter que no sea un espacio en blanco. \A Representa el inicio de la cadena. No un carcter sino una posicin. \Z Representa el final de la cadena. No un carcter sino una posicin. \b Marca el inicio y el final de una palabra. \B Marca la posicin entre dos caracteres alfanumricos o dos no-alfanumricos.

OBS Algunos lenguajes, como Java, asignan su propio significado a la barra invertida, por lo que deber repetirse para que sea considerada una expresin regular (ej. String expresion="\\d.\\d" para indicar el patrn \d.\d).

S-ar putea să vă placă și