Expresiones Regulares

Documentos relacionados
Facultad de Ingeniería Universidad de Buenos Aires Sistemas Operativos Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio.

//Sección de manejo de excepciones. Las rutinas de manejo de errores //aparecen aqui

LEX. Las definiciones y subrutinas son opcionales. El segundo %% es opcional pero el primer %% indica el comienzo de las reglas.

Uso de Disparadores. Miguel Angel Garduño Cordova Isaac Méndez Hernández

Programación shell en Unix/Linux sh, ksh, bash (con ejercicios corregidos) (3ª edición)

Elementos de un programa en C

PASOS PARA CREAR FUNCIONES CON VBA

Teoría de Autómatas y Compiladores [ICI-445] Capítulo 1: Lenguajes y Gramáticas Formales

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

SENA Distrito Capital Centro de Electricidad, Electrónica y Telecomunicaciones ADSI - Ing. Espec. Javier Vaquiro

Expresiones regulares y distancia de edición.

Generador de analizadores léxicos FLEX

LENGUAJE DE PROGRAMACION I. Ing. JAVIER ECHEGARAY ROJO Ing. WILDER ROMAN MUNIVE. Ing. Javier Echegaray Rojo / Ing. Wilder Román Munive Pag 1

Lenguajes, Gramáticas y Autómatas Conceptos

MASTER PROFESIONAL C# 5 Y ASP.NET MVC 5

Unidad I Introducción a la programación de Sistemas. M.C. Juan Carlos Olivares Rojas

MANUAL DE RUBY (PARTE I) Luis José Sánchez González

TP N 4 Redirección de entrada y salida estándar

El lenguaje C. 1. Identificadores, constantes y variables

Principios de Computadoras II

Shell Script Sistemas Operativos III - ITS EMT - CETP

Enteros. Son los números que no contienen componentes fraccionarios y, por tanto, no contienen punto decimal.

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

PROGRAMA FORMATIVO. Administración de Sistemas Solaris y Oracle Linux con Shellscript

ESTRUCTURAS REPETITIVAS EN PHP

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Tema IV El lenguaje de programación PHP Tipos de Datos

El Sistema Operativo Linux

2.3. Lenguajes de programación del lado Servidor. ASP.NET (Active Server Pages).

Excel aplicado a ingenieros

FORMATO CONDICIONAL EN EXCEL

TIPOS DE DATOS EN ABAP

Programación shell-scripts 1 LA SHELL

Avance - Soluciones Informáticas Página 1 de 17

Unidad V: Programación del lado del servidor

Clase 4: Un poco más de Python

Funciones y Condicionales Introducción a la Programación

PHP: Lenguaje de programación

Microsoft Office Word

Introducción al Uso del Sistema Operativo. Segunda Parte. Unix. Edición y procesamiento de texto. 1. Edición y Procesamiento de Texto

Dependiendo de las tareas, podemos clasificar las sentencias SQL en dos tipos:

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

1.- Para cada uno de los siguientes problemas escribir el diagrama de flujo y el pseudocódigo de un programa que lo resuelva:

Escribir la expresión regular de un número entero que no acepte que el primer dígito sea cero salvo el número 0. Solución: 0 [1-9][0-9]*

El lenguaje de programación PHP Tipos de Datos. Semestre: A-2010

UNIDAD 1 GENERALIDADES HTML

Taller de Sistemas Operativos. Índice de Comandos según su función

Modulo I: Introducción Gestores de Bases De Datos

Programación en Visual Basic Ricardo Rodríguez García

Nano Taller de Python

ACCESS XP. Objetivos. Duración. 64 horas. Contenidos. Módulo 1: Introducción. Parte 1 Bienvenida Certificado MOUS Resumen

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle:

Cuerpo Administrativo, Especialidad Operador de Informática

TUTORIAL SOBRE EXPRESIONES REGULARES EN JAVASCRIPT PARA VALIDACIÓN DE CAMPOS EN FORMULARIOS HTML:

Hoja de ejercicios del Tema 3

INTRODUCCIÓN. Estructura de Datos Tipos Abstractos de Datos (TAD S) Profs. Lorna Figueroa M. Mauricio Solar F. UTFSM 1 / 2008

DOCENTE: JESÚS E. BARRIOS P.

Tema 3.- Predicados y sentencias condicionales

FUNCIONES PHP: DECLARACIÓN Y LLAMADAS. PARÁMETROS, RETURN. EJERCICIOS EJEMPLOS RESUELTOS. (CU00827B)

LABORATORIO DE PROCESADORES DE LENGUAJE Curso: Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison

Manual de turbo pascal

INTRODUCCIÓN A BASE DE DATOS. Excel - Access

Inducción en definiciones y demostraciones AUTÓMATAS Y LENGUAJES FORMALES PRELIMINARES MATEMÁTICOS. Números naturales. Inducción matemática

Objetivo: Construir un programa integrando sentencias de decisión MARCO TEÓRICO

Utilización de Funciones en OpenOffice.org Calc

Ficha de Aprendizaje N 13

UNIVERSIDAD TECNOLÓGICA NACIONAL FACULTAD REGIONAL CÓRDOBA EL LENGUAJE DE LOS DATOS EN LA PC Y SU FORMA DE ALMACENAMIENTO

Unidad II. Metodología para resolver problemas aplicando la POO. Parte 1

TIPOS DE DATOS BASICOS EN LENGUAJE C

Versión 2.2 BOLETÍN GENERAL. a2 Herramienta Administrativa Configurable. a2 softway C. A.

En matemáticas el concepto de conjunto es considerado primitivo y no se da una definición de este, por lo tanto la palabra CONJUNTO debe aceptarse

Objetivos y Temario CURSO MySQL 5

UNIDAD 4. MODIFICAR TABLAS DE DATOS

Conversión entre Tipos

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Sistema Operativo Linux

Expresiones regulares, gramáticas regulares

INICIACIÓN A LA PROGRAMACIÓN II

Laboratorio de Sistemas Departamento de Ingeniería en Sistemas de Información Universidad Tecnológica Nacional Facultad Regional Córdoba. Porque PHP?

Visual Basic.net Completo

1. Computadores y programación

Profesor(a): M. A. Zeferino Galarza Hernández

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Lenguajes y Gramáticas

8 SQL SERVER 2008 RA-MA

Recopilación de ejercicios sobre expresiones regulares en exámenes de Compiladores e intérpretes

VBA. Visual Basic para Aplicaciones. Guía 1. Visual Basic para Aplicaciones en Office 1

Programación con bash

Clase 09: AFN, AFD y Construcción de Thompson

Transcripción:

Facultad de Ingeniería Universidad de Buenos Aires 75.08 Sistemas Operativos Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Expresiones Regulares

Se utilizan como solución al problema de realizar búsquedas de 2 caracteres en una cadena de 10 o un patrón definido en un archivo de millones de caracteres Las Expresiones Regulares (ER) constituyen un potente mecanismo para realizar manipulaciones y/o búsquedas de cadenas de texto FIUBA 75.08 Sistemas Operativos Expresiones Regulares 2

Se define un espacio de búsqueda o patrón dentro del texto interpretando los caracteres en forma literal o especial. A los caracteres especiales se los llaman metacaracteres porque forman parte del mismo alfabeto del lenguaje pero se interpretan como descriptores de los caracteres literales FIUBA 75.08 Sistemas Operativos Expresiones Regulares 3

Ejemplos de espacio de búsqueda o patrón Dada la siguiente línea de texto: -No puede ser pero es. El número de páginas de este libro es exactamente infinito. Ninguna es la primera; ninguna, la última. Extracto del cuento El libro de arena ed 1975 J. L. Borges Utilizando ER podríamos definir el siguiente patrón es. El número de páginas de este libro es exactamente infinito. Ninguna es FIUBA 75.08 Sistemas Operativos Expresiones Regulares 4

La ER para definir el patrón sería: ' es.*es ' Los caracteres espacio, e y ese son interpretados en forma literal Los caracteres punto y asterisco actúan como Metacaracteres es. El número de páginas de este libro es exactamente infinito. Ninguna es FIUBA 75.08 Sistemas Operativos Expresiones Regulares 5

Una expresión 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 Es un conjunto de caracteres que especifican un patrón Toma su numbre de la notación utilizada por el matemático Stephen Cole Kleene en la década del 50 Aún antes de la creación de Unix, Ken Thompson implementó las RE para la búsqueda de patrones en un editor de línea de un sistema time-sharing FIUBA 75.08 Sistemas Operativos Expresiones Regulares 6

Las Expresiones Regulares son interpretadas por un Motor Existen motores para el usuario final, por ejempo: grep: global regular expresion, comando de Unix sed: stream editor, comando de Unix awk, ed, egrep, etc: comandos de Unix Editores varios: vi, vim, etc FIUBA 75.08 Sistemas Operativos Expresiones Regulares 7

Motores para el programador, por ejempo: Perl Python PHP Java/JavaScript.Net Framework Motores para Base de Datos por ejempo: Oracle FIUBA 75.08 Sistemas Operativos Expresiones Regulares 8

IMPORTANTE Las ERs no forman parte del SHELL Si deseamos utilizar comandos que reciben ERs como parámetro, debemos protejernos de las distintas expansiones que realiza el SHELL FIUBA 75.08 Sistemas Operativos Expresiones Regulares 9

Metacaracteres de ER Simples. (punto): Cualquier caracter de Anclaje ^ : Referencia al inicio de línea $ : Referencia al fin de línea FIUBA 75.08 Sistemas Operativos Expresiones Regulares 10

de Repetición? : Que el caracter anterior tenga como máximo una ocurrencia * : Expansión del caracter anterior en n ocurrencias subsiguientes del mismo. Incluye ocurrencia nula. \{x,y\} : Que el caracter anterior se repita entre x e y veces, siendo siendo opcional y FIUBA 75.08 Sistemas Operativos Expresiones Regulares 11

De Conjuntos [ ]: inicio y fin de conjunto - : rango dentro del conjunto ^ : negación del conjunto FIUBA 75.08 Sistemas Operativos Expresiones Regulares 12

grep opciones RE lista_de_archivos El comportamiento por defecto es mostrar por std out todo el contenido de las líneas en las que se encuentre al menos una ocurrencia de la RE pasado por parámetro Es un típico comando filtro Ejemplo de opciones que modifican el comportamiento por defecto -l: solo muestra por std out el nombre de los archivos que en el que alguna de sus líneas contenga al menos una ocurrencia de la RE FIUBA 75.08 Sistemas Operativos Expresiones Regulares 13

grep opciones RE lista_de_archivos -i: ignora diferencias entre mayúsculas y minúsculas -v: invierte el comportamiento por defecto -n: -c: FIUBA 75.08 Sistemas Operativos Expresiones Regulares 14

Ejemplos grep # muestra las líneas que comiencen con las palabras Hola u hola > grep '^[Hh]ola' DATA # muestra las líneas no vacías > grep -v '^$' DATA # muestra las líneas no vacías > grep '.' DATA FIUBA 75.08 Sistemas Operativos Expresiones Regulares 15

# muestra las líneas con un dígito < a 5 en su 3 caracter > grep '^..[0-4]' DATA # muestra las líneas que no contengan un dígito entre 5 y 9 en su 3 caracter > grep '^..[^5-9]' DATA # muestra las líneas que comienzan con una a y finalizan con por lo menos una b seguida de por lo menos una c seguida de una Z. > grep '^a.*bcc*z$' DATA Ejemplo de salida: afaajhadsbcz a567cbccz89jhgfdacasdfbcccccccz FIUBA 75.08 Sistemas Operativos Expresiones Regulares 16

Ejercicio Se tiene un archivo DATANET.conf con los codigos de transaccion bancaria Se desea saber si existe una inconsistencia entre los campos CREATE_TRX y PAYMENT_TYPE la inconsistencia seria que existiera un valor Y en CREATE_TRX y el valor CHEQUE en campo PAYMENT_TYPE Los campos están separados por ; FIUBA 75.08 Sistemas Operativos Expresiones Regulares 17

El formato de registro es BANK_ACCOUNT TRX_COD DESCRIPTION CREATE_TRX RECEIPT_METHOD PAYMENT_TYPE CODE_TYPE Solo se puede usar el comando grep FIUBA 75.08 Sistemas Operativos Expresiones Regulares 18

sed: Stream Editor (editor en línea) sed es un verdadero editor de líneas, lo que hace es ejecutar comandos sobre cada línea de la entrada std o del archivo pasado como parámetro sed opciones comando <parametros del comando> [archivo] FIUBA 75.08 Sistemas Operativos Expresiones Regulares 19

Algunas de los comandos son: -a: agregar -i : insertar -d: borrar -s: sustitur FIUBA 75.08 Sistemas Operativos Expresiones Regulares 20

Sustitución El comportamiento por defecto es recorrer todas las líneas y mostrarlas por la std out a menos que se encontre una ocurrencia del patrón de búsqueda, en cuyo caso se muestra la línea cambiando el patrón por lo que se indique como patrón de sustitución. Solo se sustituye la primera ocurrencia del patrón de búsqueda FIUBA 75.08 Sistemas Operativos Expresiones Regulares 21

sed s/busqueda/sustitucion/ lista_archivos El caracter que sigue al comando s queda a criterio del usuario, debe ser el mismo que separe el patrón de búsqueda del de la sustitución. FIUBA 75.08 Sistemas Operativos Expresiones Regulares 22

Tengo sed. Tengo mucha, pero mucha sed. cat archivo sed 's/m.*a//' Tengo sed. Tengo sed. El patrón se expande desde la primera m hasta la última a mucha, pero mucha FIUBA 75.08 Sistemas Operativos Expresiones Regulares 23

Se puede modificar el comportamiento por defecto Para sustituir todas las ocurrencias del patrón: sed s/find/replace/g Para sustituir en algunas líneas hay 2 opciones Direccionamiento explícito por número de línea: sed 80s/a/B/ Direccionamiento por patrón: sed /^Hola/soAoBo FIUBA 75.08 Sistemas Operativos Expresiones Regulares 24

Ejercicio Se tiene un archivo con números enteros de 3 dígitos, se desea generar otro archivo con los capicúas de cada uno de los números Ejemplo: 123 12321 231 23132 932 93239 FIUBA 75.08 Sistemas Operativos Expresiones Regulares 25

Comando insert El comportamiento por defecto es imprimir por salida std nuevas líneas antes de una línea que contenga al menos una ocurrencia del patrón de búsqueda. sed '/patron/i\ Nueva_linea_1 Nueva_linea_N' lista_de_archivos FIUBA 75.08 Sistemas Operativos Expresiones Regulares 26

Archivo F.sql CREATE OR REPLACE FUNCTION my_true RETURN NUMBER IS BEGIN RETURN TRUE; END my_true ; FIUBA 75.08 Sistemas Operativos Expresiones Regulares 27

> sed '/my_true/i\ Nueva_linea' F.sql Nueva_linea CREATE OR REPLACE FUNCTION my_true RETURN NUMBER IS BEGIN RETURN TRUE; Nueva_linea END my_true ; FIUBA 75.08 Sistemas Operativos Expresiones Regulares 28

Comando append El comportamiento por defecto es imprimir por salida std nuevas líneas después de una línea que contenga al menos una ocurrencia del patrón de búsqueda. sed '/patron/a\ Nueva_linea_1 Nueva_linea_N' lista_de_archivos FIUBA 75.08 Sistemas Operativos Expresiones Regulares 29

> sed '/my_true/a\ Nueva_linea' F.sql CREATE OR REPLACE FUNCTION my_true RETURN NUMBER Nueva_linea IS BEGIN RETURN TRUE; END my_true ; Nueva_linea FIUBA 75.08 Sistemas Operativos Expresiones Regulares 30

Se tiene un archivo de texto en el que aparecen fechas con el siguiente formato mm/dd/aaaa se desea cambiarle el formato a dd/mm/aaaa 1 2 3 -----mes---- -----día----- -----año---- sed s-\([0-1] [0-9]\)/\([0-3][0-9]\)/\([0-9] \{4\}\)-\2/\1/\3-g FIUBA 75.08 Sistemas Operativos Expresiones Regulares 31