1. República Bolivariana de Venezuela
I.U.P “Santiago Mariño”
Programación No Numérica II
Prof. Agustín Marcano
Br. Renny Hernández
2. Introducción
Una expresión regular, a menudo llamada también
patrón, es una expresión que describe un conjunto de
cadenas sin enumerar sus elementos. Su utilidad más
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.
Las expresiones regulares constituyen un mecanismo
bastante potente para realizar manipulaciones de
cadenas de texto. El proceso para el que se usan
estas expresiones, presente en el mundo el UNIX y el
lenguaje Perl, es el de buscar y/o substituir una sub-
cadena de texto dentro de otra cadena.
3. Las expresiones regulares son series de
caracteres que forman un patrón,
normalmente representativo de otro
grupo de caracteres mayor, de tal forma
que se puedan comparar el patrón con
otro conjunto de caracteres para ver las
coincidencias.
4. expresiones regulares
El objetivo de las expresiones regulares es
representar todos los posibles lenguajes
definidos sobre un alfabeto Σ, en base a una
serie de lenguajes primitivos, y unos operadores
de composición. en base a una serie de
lenguajes primitivos, y unos operadores de
composición.
Lenguajes primitivos: el lenguaje formado por la
palabra vacía, y los lenguajes correspondientes a
los distintos símbolos del alfabeto.
Operadores de composición: la unión, la
concatenación y el cierre.
5. Ejemplo de expresión regular
<? am // este es nuestro patrón. Si lo
comparamos con:
am // coincide
panorama // coincide
ambición // coincide
campamento // coincide
mano // no coincide
6. Ejemplo de expresión regular
[abc123] Representa uno de los caracteres situados entre los paréntesis.
[a-e] Representa cualquiera de los caracteres que se encuentran entre el
rango de: a y e, incluyendo tanto el primer carácter como el último.
[a-eh-x] Del mismo modo que el anterior, representa cualquier carácter
situado entre el rango de: a-e y h-x.
[^a-s] Representa cualquier carácter que no se encuentre entre el rango
de: a y s.
^ Define el comienzo de la cadena de expresión regular. Coincidencia al
principio de la línea.
$ Define el final de la cadena de expresión regular, en cadenas multilínea,
encontrará la última ocurrencia.
7. Ejemplo de expresión regular
[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]+)?
Esta expresión regular se puede descomponer en los siguientes
bloques, para poder interpretarla con mayor facilidad:
El primer bloque [-+]? está indicando que el número podría estar
precedido opcionalmente de un signo - o un signo +
El segundo bloque [0-9]* indica que podría aparecer un número
de 0 o más dígitos del 0 al 9
El tercer bloque indica que también de manera opcional podría
aparecer un punto decimal
El cuarto bloque sugiere la aparición de un número de 1 o más
dígitos del 0 al 9
El quinto bloque es precisamente el que indicaría la parte
exponencial del número y podría ser totalmente opcional.
Este último bloque se descompone en los siguiente sub-bloques:
Un primer bloque que indica la aparición de la letra 'e' o 'E' de
exponente.
Un segundo bloque que indica la aparición opcional del signo '-' o
el signo '+‘
Un tercer bloque que indica la aparición de un número de 1 o
más dígitos del 0 al 9.
8. Divide y vencerás
El termino “divide y vencerás” hace
referencia a la resolución de problemas
sacando de ellos sub-problemas menos
complejos para su fácil comprensión,
hasta q su solución sea sumamente fácil,
la solución general viene dada de las
soluciones de los sub-problemas.
9. Divide y vencerás
Ventajas:
Resolución de problemas complejos
Control del redondeo
Acceso a memoria
Paralelismo
Eficiencia del algoritmo
10. Divide y vencerás
Desventajas:
Lentitud en la repetición del proceso
recursivo:
Inconveniencia de aplicar el método a
situaciones
no ser aplicable cuando las interacciones
no son predecibles de preciso.
11. Aplicación haciendo uso de la
estructura Pila
Las expresiones regulares se aplican en las
pilas haciendo recursividad en la transición del
proceso de apilar o desapilar elementos,
tomando en cuenta como se plantee el
problema
Esto permite más libertad a la hora de elegir los
sub-problemas a resolver después, una
característica que es importante en algunas
aplicaciones, por ejemplo en la búsqueda de
anchura y en el método de ramificación para
optimización de sub-problemas.
12. Aplicación haciendo uso de la
estructura Pila
Para los procesos de recursión se tiene
que asegurar que haya suficiente
memoria libre. Sino se puede sufrir de un
desbordamiento de la pila.
Los desbordamientos de pilas podrían ser
difíciles de evitar cuando usamos
procedimientos recursivos, donde muchos
compiladores asumen que la pila de
recursión es una zona contigua de
memoria
13. EXPRESIONES In-fija, Pre-fija Y
Post-fija
((2+3)*4) = x (2+(3*4)) = x
Notación
prefija
= + 2 * 3 4 x = * + 2 3 4 x
Notación
infija
2+3*4 = x (2+3)*4 = x
Notación
postfija
2 3 4 * + x = 2 3 + 4 * x =
Notación
funcional
igual(suma(2,produ
cto(3,4)),x)
igual(producto(suma(2,3),4),x)
14. Una expresión aritmética está formada por
operandos y operadores. Así la expresión x *y-(a+b)
consta de los operadores *, -, + y de los operandos
x, y, a, b. Los operandos pueden ser valores
constantes, variables o incluso, otra expresión.
Los operadores son los símbolos conocidos de las
operaciones matemáticas. La evaluación de una
expresión aritmética da lugar a un valor numérico, se
realiza sustituyendo los operandos que son variables
por valores concretos y ejecutando las operaciones
aritméticas representadas por los operadores.
EXPRESIONES In-fija,
Pre-fija Y Post-fija
15. EXPRESIONES In-fija,
Pre-fija Y Post-fija
Así, si los operandos de la expresión anterior
toman los valores: x=5, y=2, a=3, b=4, el
resultado de la evaluación es: 5*2 – (3+4) =
5*2 – 7 = 10 – 7 = 3 La forma habitual de
escribir expresiones matemáticas es aquella en la
que el operador está entre dos operandos. La
expresión anterior escrita de esa forma, recibe el
nombre de notación infija. Esta forma de escribir
las expresiones exige, en algunas ocasiones, el
uso de paréntesis para encerrar sub-expresiones
con mayor prioridad, sin olvidar los niveles de
prioridad y la asociatividad.
16. Conclusión
Pues bien, una expresión regular es un patrón que describe
a una cadena de caracteres. Todos hemos utilizado alguna
vez la expresión *.doc para buscar todos los documentos
en algún lugar de nuestro disco duro, pues bien, *.doc es
un ejemplo de una expresión regular que representa a
todos los archivos con extensión doc, el asterisco significa
cualquier secuencia de caracteres(vale, los que ya
conozcan esto dirán que no es correcto, y dirán bien, es
más preciso hablar de *.doc pero el ejemplo es muy
gráfico).
Las expresiones regulares se rigen por una serie de normas
y hay una construcción para cualquier patrón de
caracteres. Una expresión regular sólo puede contener
(aparte de letras y números) los siguientes caracteres:
< $, ^, ., *, +, ?, [, ], . >