SlideShare una empresa de Scribd logo
1 de 25
Descargar para leer sin conexión
Programación en perl
 Introducción a expresiones regulares
¿Qué es una expresión
      regular?
Una expresión regular es una plantilla o
patrón que se compara con una cadena de
texto.

El resultado de esta comparación es que la
cadena de texto coincide o no coincide con
ese patrón.

No existe “coincide a medias” o “casi
coincide” o “esta parte sí pero esta otra no”
Ejemplo de uso
1.$_ = "yabba dabba doo";
2.if (/abba/) {
3.  say "¡Coincide!n";
4.}



       En perl, las expresiones regulares forman
       parte de la propia sintaxis del lenguaje

       Se evalúa el cuerpo del if si la secuencia
       ‘abba’ está en la cadena $_
Operadores


$string =~ /REGEXP/ -> devuelve verdadero
si la cadena coincide con el patrón

$string !~ /REGEXP/ -> devuelve falso si la
cadena coindice con el patrón
¿Cómo hay que leer un
      patrón?
 El patrón /abba/ no es “la palabra abba”.

 El motor de expresiones regulares interpreta
 el patrón como:

   un caracter a seguido de un caracter b
   seguido de un caracter b seguido de un
   caracter a
Cuantificadores
+ carácter precedente aparece 1 o más veces

   ejemplo: /a+lfonso/

* carácter precedente aparece 0 o más veces

   ejemplo /a*lfonso/

? carácter precedente aparece una o ninguna vez

   ejemplo /alfon?so/

{min,max} número mínimo y máximo de ocurrencias

   ejemplo /alfons{4,6}o/
. y []
. cualquier carácter distinto de n

   ejemplo /a.*lfonso/

   ¿qué ocurre si aplicamos el patrón a la siguiente cadena:
   akksdffonsofonso?

[ ]! lista de opciones

   ejemplo /[aA]lfons[oO]/

   Admite rangos [a-z] [A-Z] [0-9]

   Si queremos incluir el - tenemos que ponerlo al principio

       [-aeiou]
[^ ]


[^ ] exclusión:

   /b[^aeiouAEIOU]/ primer carácter de
  una palabra siempre que este caracter no
  sea a, e, i, o, u, A, E, I, O, U.
Escapado


Si queremos incluir en el patrón alguno de
los caracteres anteriores, hay que escaparlos

  /www.google.com/
Posiciones
b límite de palabra (espacio, tabuladores, puntos,
comas, guiones, principio y fin de línea, etc)

  /[aA]lfo?nsob/

B no debe haber un límite de palabra

  /Bola/

^ principio de cadena

$ fin de cadena
Posiciones
Dada la cadena:

Este es un curso de perl.

¿Qué patrón dará una coincidencia positiva?

  perlb

  perlb$

  perlb.$
()

Se utilizan para agrupar partes de un
patrón.

  /pepe+/ encajaría con pepeeeeeee

  /(pepe)+/ encajaría con pepepepepepe

Cuidado con /(pepe)*/ esto encajaría con
cualquier patrón
()
Los paréntesis permiten reutilizar parte de la cadena coincidente dentro
de la propia expresión regular:

    /(.)1/ encuentra cualquier carácter que vaya seguido de sí mismo.

Se pueden poner varios paréntesis dentro de una misma expresión
regular.

Perl los asignará a las referencias 1, 2, 3, etc según su orden de
apertura ignorando la anidación.

    /(OS ([Xx]) (.+))/ aplicado a la cadena OS X Lion

        1 ->OS X Lion

        2 -> X

        3 -> Lion
()
A partir de perl 5.10 es posible hacer referencia a un grupo
usando la notación g{N}

   1 -> g{1}

Supongamos qué tenemos el siguiente patrón:

   /(.)111/ y la cadena aa11bb

   Perlo no sabe si estamos diciendo 1 seguido de 11 o 11
   seguido de 1 o 111

Para esto se utiliza la nueva notación

   /(.)g{1}11/
Alternativa: |


/luis|angel|pepe/ ->encajaría con cualquier
cadena que contuviese luis o angel o pepe.

/Luis (y|o) Miguel/
Clases de caracteres

d números

s espacio, form-feed, tabulador, nueva línea
y retorno de carro.

R (perl 5.10) cualquier tipo de salto de línea
(no tenemos que preocuparnos por el formato
de fichero, sistema operativo, etc)

w caracteres [a-zA-Z0-9_]
Opciones
/PATRON/OPCIONES

  i no diferencia entra mayúsculas y minúsculas
  /pepe/i coincidiría con Pepe, pepe, PePe, PEPE

  s hace que . también incluya el salto de línea

  x hace que se ignoren espacios, tabuladores,
  comentarios y saltos de línea en la expresión
  regular:
  /
       [0-9]+   # Esto es un comentario
       [#]      # el caracter “#”
  /x
Variables especiales

$1, $2, $3 -> contienen la parte del patrón
encerrada en su respectivo paréntesis

$& patrón encontrado

$` lo que precedía al patrón encontrado

$’ lo que sucede al patrón encontrado
Ejercicios
¿qué patrón usarías para localizar una página web como
www.protrainning.com, mail.yahoo.com, etc?

Utilizando el fichero last.txt:

   calcular todas las veces que se ha reiniciado el
   ordenador en el mes de noviembre

   evaluar las veces que Alfonso ha entrado más tarde de
   las 8 y si supera las 5 veces, avisar de que es un vago.

   Calcular la hora mínima y máxima a la que root ha
   accedido y el tiempo que ha estado activo.
Buscar y reemplazar
s/REGEXP/SUSTITUTO/opciones

Opciones:

  i !ignora mayúsculas y minúsculas

  g!busca y sustituye todas las ocurrencias

  e!considera SUSTITUTO una expresión y la
  evalúa

     s/d{3,8}/9*9/e -> sustituye 456 por 81
Ejemplos de patrones



Localizar variables en un script perl

  mys+[$@%][a-zA-Z][a-zA-Z_]*b
Ejemplos de patrones
Localizar una IP:

   Es importante saber qué buscamos para definir nuestra
   expresión regular

   ¿nos vale este patrón d{1,3}.d{1,3}.d{1,3}.d{1,3}

   Depende, ya que este patrón encuentra 999.999.999.999 que
   no es una IP válida

   Podemos capturar cada número en $1, $2, $3, $4 y validarlo a
   posteriori

   Podemos utilizar este patrón
   [01]?d?d|2[0-4]d|25[0-5] . [01]?d?d|2[0-4]d|25[0-5] .
   [01]?d?d|2[0-4]d|25[0-5] . [01]?d?d|2[0-4]d|25[0-5]
Ejemplos de patrones
Localizar números en coma flotante

     primer intento:!   [-+]?[0-9]*.?[0-9]*

MALO: ENCAJA CON CUALQUIER CADENA YA QUE TODOS LOS CARACTERES SON OPCIONALES

     segundo intento:: lo que es opcional es el decimal y los números siguientes, debe haber al
     menos un número

     [-+]?[0-9]+(.[0-9]*)?

     tercer intento: falta que encuentre números como .0098

          lo hacemos utilizando un or

          [-+]?[0-9]+(.[0-9]*)?|[-+]?(.[0-9]+)

          Sigue sin funcionar ya que va a encontrar, por ejemplo 123.1234.1234

          Si esta expresión regular es buena o no dependerá del contexto

     Cuarto intento
     s[-+]?[0-9]+(.[0-9]*)?|[-+]?(.[0-9]+)s
“looking around”
(?=...) -> mira hacia la derecha

(?<= ... ) -> mira hacia la izquierda

ejemplo /alf(?=onso)/ -> sólo encuentra la cadena “alf” si esta va seguida de “onso”

Estos operadores no consumen texto

     ejemplo /(alf(?=onso)|onso)/

     Sirven para encontrar posiciones:

          Supongamos que tenemos un texto en el que hay muchos “alfono” en
          lugar de alfonso.

          Podríamos utilizar la siguiente expresión para corregir el error:
          s/(?<=alfon)(?=ob)/s/g

Ejercicio: dado un número 1234123 meter los separadores de miles, es decir,
reescribir el número como 1.234.123
Ejercicios
Utilizando el fichero error.log.1.
Con objeto de enviar este fichero a una lista
de correo pública, se desea lo siguiente:

  Sustituir las direcciones IP por
  XXX.XXX.XXX.XXX

  Sustituir las versiones de los programas
  Apache, mod_jk, mod_ssl y open_ssl ! por
  la cadena ---obfuscated for security---

Más contenido relacionado

La actualidad más candente

tutorial y Guia de fundamentos drscheme
tutorial y Guia de fundamentos drschemetutorial y Guia de fundamentos drscheme
tutorial y Guia de fundamentos drschemeHospital de Yumbo
 
Expresiones regulares edward
Expresiones regulares edwardExpresiones regulares edward
Expresiones regulares edwardEdward Larez
 
Juan carlos scrip
Juan carlos scripJuan carlos scrip
Juan carlos scripjuanka1395
 
Ejercicios evaluados i. shearly achji y ricardo ros. estructuras de datos i. ...
Ejercicios evaluados i. shearly achji y ricardo ros. estructuras de datos i. ...Ejercicios evaluados i. shearly achji y ricardo ros. estructuras de datos i. ...
Ejercicios evaluados i. shearly achji y ricardo ros. estructuras de datos i. ...Ricardo Ros
 
Chuleta de lenguaje C para principiantes
Chuleta de lenguaje C para principiantesChuleta de lenguaje C para principiantes
Chuleta de lenguaje C para principiantesAbrirllave
 
Lenguaje de programación c
Lenguaje de programación cLenguaje de programación c
Lenguaje de programación cvictdiazm
 
Introduccion matlab
Introduccion matlabIntroduccion matlab
Introduccion matlabgrupo6eda
 
Funcion si m
Funcion si mFuncion si m
Funcion si mjt527
 
Analisis sintactico10
Analisis sintactico10Analisis sintactico10
Analisis sintactico10Emanuel Gs
 

La actualidad más candente (19)

Transformada de Laplace
Transformada de LaplaceTransformada de Laplace
Transformada de Laplace
 
Introducción a dr racket
Introducción a dr racketIntroducción a dr racket
Introducción a dr racket
 
Programación Funcional con Scheme
Programación Funcional con SchemeProgramación Funcional con Scheme
Programación Funcional con Scheme
 
Maple v comandos
Maple v comandosMaple v comandos
Maple v comandos
 
tutorial y Guia de fundamentos drscheme
tutorial y Guia de fundamentos drschemetutorial y Guia de fundamentos drscheme
tutorial y Guia de fundamentos drscheme
 
PSEUDOCODIGO
 PSEUDOCODIGO PSEUDOCODIGO
PSEUDOCODIGO
 
Expresiones regulares edward
Expresiones regulares edwardExpresiones regulares edward
Expresiones regulares edward
 
Excel funcionesbasicas-100130150120-phpapp01
Excel funcionesbasicas-100130150120-phpapp01Excel funcionesbasicas-100130150120-phpapp01
Excel funcionesbasicas-100130150120-phpapp01
 
Juan carlos scrip
Juan carlos scripJuan carlos scrip
Juan carlos scrip
 
Ejercicios evaluados i. shearly achji y ricardo ros. estructuras de datos i. ...
Ejercicios evaluados i. shearly achji y ricardo ros. estructuras de datos i. ...Ejercicios evaluados i. shearly achji y ricardo ros. estructuras de datos i. ...
Ejercicios evaluados i. shearly achji y ricardo ros. estructuras de datos i. ...
 
Chuleta de lenguaje C para principiantes
Chuleta de lenguaje C para principiantesChuleta de lenguaje C para principiantes
Chuleta de lenguaje C para principiantes
 
Arreglos en c++2020
Arreglos en c++2020Arreglos en c++2020
Arreglos en c++2020
 
Lenguaje de programación c
Lenguaje de programación cLenguaje de programación c
Lenguaje de programación c
 
Visual Basic 6.0 Parte 1/2
Visual Basic 6.0 Parte 1/2Visual Basic 6.0 Parte 1/2
Visual Basic 6.0 Parte 1/2
 
Introduccion matlab
Introduccion matlabIntroduccion matlab
Introduccion matlab
 
Manual de funciones
Manual de funcionesManual de funciones
Manual de funciones
 
Funcion si m
Funcion si mFuncion si m
Funcion si m
 
Analisis sintactico10
Analisis sintactico10Analisis sintactico10
Analisis sintactico10
 
Python04
Python04Python04
Python04
 

Destacado

Lenguajes regulares
Lenguajes regularesLenguajes regulares
Lenguajes regularesKenia Adams
 
Expresiones regulares y gramáticas
Expresiones regulares y gramáticasExpresiones regulares y gramáticas
Expresiones regulares y gramáticasSantiago Ramirez
 
(Sin soluiciones) s3 afnd y afd
(Sin soluiciones) s3   afnd y afd(Sin soluiciones) s3   afnd y afd
(Sin soluiciones) s3 afnd y afddwonga
 
Expresiones regulares
Expresiones regularesExpresiones regulares
Expresiones regularesJordan-P
 
Expresiones regulares y gramaticas
Expresiones regulares y gramaticasExpresiones regulares y gramaticas
Expresiones regulares y gramaticasRobin Pena
 
Lenguajes Regulares.
Lenguajes Regulares.Lenguajes Regulares.
Lenguajes Regulares.guestdf1874
 
Lenguajes Regulares y Autómatas Finitos - Clase 6
Lenguajes Regulares y Autómatas Finitos - Clase 6Lenguajes Regulares y Autómatas Finitos - Clase 6
Lenguajes Regulares y Autómatas Finitos - Clase 6UTN-FRT Tucumán Argentina
 
Expresiones regulares y gramáticas
Expresiones regulares y gramáticasExpresiones regulares y gramáticas
Expresiones regulares y gramáticasJuanchi Novas
 
Clase4: Transformación desde Expresión regular a Autómata finito determinista
Clase4: Transformación desde Expresión regular a Autómata finito deterministaClase4: Transformación desde Expresión regular a Autómata finito determinista
Clase4: Transformación desde Expresión regular a Autómata finito deterministamvagila
 

Destacado (9)

Lenguajes regulares
Lenguajes regularesLenguajes regulares
Lenguajes regulares
 
Expresiones regulares y gramáticas
Expresiones regulares y gramáticasExpresiones regulares y gramáticas
Expresiones regulares y gramáticas
 
(Sin soluiciones) s3 afnd y afd
(Sin soluiciones) s3   afnd y afd(Sin soluiciones) s3   afnd y afd
(Sin soluiciones) s3 afnd y afd
 
Expresiones regulares
Expresiones regularesExpresiones regulares
Expresiones regulares
 
Expresiones regulares y gramaticas
Expresiones regulares y gramaticasExpresiones regulares y gramaticas
Expresiones regulares y gramaticas
 
Lenguajes Regulares.
Lenguajes Regulares.Lenguajes Regulares.
Lenguajes Regulares.
 
Lenguajes Regulares y Autómatas Finitos - Clase 6
Lenguajes Regulares y Autómatas Finitos - Clase 6Lenguajes Regulares y Autómatas Finitos - Clase 6
Lenguajes Regulares y Autómatas Finitos - Clase 6
 
Expresiones regulares y gramáticas
Expresiones regulares y gramáticasExpresiones regulares y gramáticas
Expresiones regulares y gramáticas
 
Clase4: Transformación desde Expresión regular a Autómata finito determinista
Clase4: Transformación desde Expresión regular a Autómata finito deterministaClase4: Transformación desde Expresión regular a Autómata finito determinista
Clase4: Transformación desde Expresión regular a Autómata finito determinista
 

Similar a ExpReg PERL titulo

RegExp JavaScript Expresiones Regulares
RegExp JavaScript Expresiones RegularesRegExp JavaScript Expresiones Regulares
RegExp JavaScript Expresiones RegularesIsabel Gómez
 
Contenido científic2 OPERADORES Y REFERENCIAS DE CELDAS
Contenido científic2 OPERADORES Y REFERENCIAS DE CELDASContenido científic2 OPERADORES Y REFERENCIAS DE CELDAS
Contenido científic2 OPERADORES Y REFERENCIAS DE CELDASINFORGRA
 
Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...
Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...
Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...luigiacarigua
 
Manual php lec13.validacion_de_formularios
Manual php lec13.validacion_de_formulariosManual php lec13.validacion_de_formularios
Manual php lec13.validacion_de_formulariosPedro Ruiz
 
Perl (practical extraction and report language)
Perl (practical extraction and report language)Perl (practical extraction and report language)
Perl (practical extraction and report language)Oliver Centeno
 
Comando grep y expresiones regulares
Comando grep y expresiones regularesComando grep y expresiones regulares
Comando grep y expresiones regularesPablo Macon
 
Tema 11 expresiones regulares en java por gio
Tema 11   expresiones regulares en java por gioTema 11   expresiones regulares en java por gio
Tema 11 expresiones regulares en java por gioRobert Wolf
 
Java script teoria
Java script teoriaJava script teoria
Java script teoriassxdan
 
Cheat Sheet: Expresiones regulares para analistas
Cheat Sheet: Expresiones regulares para analistasCheat Sheet: Expresiones regulares para analistas
Cheat Sheet: Expresiones regulares para analistasAukera
 
PresentacióN 4
PresentacióN 4PresentacióN 4
PresentacióN 4pokerpc
 
Comando grep y expresiones regulares
Comando grep y expresiones regularesComando grep y expresiones regulares
Comando grep y expresiones regularesMadelón García
 

Similar a ExpReg PERL titulo (20)

Clase 10 expresiones regulares
Clase 10 expresiones regularesClase 10 expresiones regulares
Clase 10 expresiones regulares
 
RegExp JavaScript Expresiones Regulares
RegExp JavaScript Expresiones RegularesRegExp JavaScript Expresiones Regulares
RegExp JavaScript Expresiones Regulares
 
Contenido científic2 OPERADORES Y REFERENCIAS DE CELDAS
Contenido científic2 OPERADORES Y REFERENCIAS DE CELDASContenido científic2 OPERADORES Y REFERENCIAS DE CELDAS
Contenido científic2 OPERADORES Y REFERENCIAS DE CELDAS
 
Expresiones regulares
Expresiones regularesExpresiones regulares
Expresiones regulares
 
Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...
Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...
Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...
 
Intro a ruby
Intro a rubyIntro a ruby
Intro a ruby
 
Manual php lec13.validacion_de_formularios
Manual php lec13.validacion_de_formulariosManual php lec13.validacion_de_formularios
Manual php lec13.validacion_de_formularios
 
Tutorial de php
Tutorial de phpTutorial de php
Tutorial de php
 
Programación con sql
Programación con sqlProgramación con sql
Programación con sql
 
Perl (practical extraction and report language)
Perl (practical extraction and report language)Perl (practical extraction and report language)
Perl (practical extraction and report language)
 
Kelly
KellyKelly
Kelly
 
Comando grep y expresiones regulares
Comando grep y expresiones regularesComando grep y expresiones regulares
Comando grep y expresiones regulares
 
Tema 11 expresiones regulares en java por gio
Tema 11   expresiones regulares en java por gioTema 11   expresiones regulares en java por gio
Tema 11 expresiones regulares en java por gio
 
Java script teoria
Java script teoriaJava script teoria
Java script teoria
 
Cheat Sheet: Expresiones regulares para analistas
Cheat Sheet: Expresiones regulares para analistasCheat Sheet: Expresiones regulares para analistas
Cheat Sheet: Expresiones regulares para analistas
 
PresentacióN 4
PresentacióN 4PresentacióN 4
PresentacióN 4
 
Curso Bash 3
Curso Bash 3Curso Bash 3
Curso Bash 3
 
Arreglos
ArreglosArreglos
Arreglos
 
Comando grep y expresiones regulares
Comando grep y expresiones regularesComando grep y expresiones regulares
Comando grep y expresiones regulares
 
Perl1 escalares
Perl1 escalaresPerl1 escalares
Perl1 escalares
 

Más de Alfonso Alba

Bienvenido a la republica independiente de las pruebas unitarias con Core Data
Bienvenido a la republica independiente de las pruebas unitarias con Core DataBienvenido a la republica independiente de las pruebas unitarias con Core Data
Bienvenido a la republica independiente de las pruebas unitarias con Core DataAlfonso Alba
 
Persistencia de datos con Parse
Persistencia de datos con ParsePersistencia de datos con Parse
Persistencia de datos con ParseAlfonso Alba
 
Plantillajornadasversion2 100708010347-phpapp01
Plantillajornadasversion2 100708010347-phpapp01Plantillajornadasversion2 100708010347-phpapp01
Plantillajornadasversion2 100708010347-phpapp01Alfonso Alba
 

Más de Alfonso Alba (9)

Bienvenido a la republica independiente de las pruebas unitarias con Core Data
Bienvenido a la republica independiente de las pruebas unitarias con Core DataBienvenido a la republica independiente de las pruebas unitarias con Core Data
Bienvenido a la republica independiente de las pruebas unitarias con Core Data
 
Persistencia de datos con Parse
Persistencia de datos con ParsePersistencia de datos con Parse
Persistencia de datos con Parse
 
Usuarios ipad
Usuarios ipadUsuarios ipad
Usuarios ipad
 
Git
GitGit
Git
 
Perl5 hashes
Perl5 hashesPerl5 hashes
Perl5 hashes
 
Perl2 arrays
Perl2 arraysPerl2 arrays
Perl2 arrays
 
Perl3 subrutinas
Perl3 subrutinasPerl3 subrutinas
Perl3 subrutinas
 
Perl4 io
Perl4 ioPerl4 io
Perl4 io
 
Plantillajornadasversion2 100708010347-phpapp01
Plantillajornadasversion2 100708010347-phpapp01Plantillajornadasversion2 100708010347-phpapp01
Plantillajornadasversion2 100708010347-phpapp01
 

Último

PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxOscarEduardoSanchezC
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...JAVIER SOLIS NOYOLA
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadAlejandrino Halire Ccahuana
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxinformacionasapespu
 
Movimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en VenezuelaMovimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en Venezuelacocuyelquemao
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.DaluiMonasterio
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuaDANNYISAACCARVAJALGA
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSjlorentemartos
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinavergarakarina022
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscaeliseo91
 

Último (20)

Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdad
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
 
Movimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en VenezuelaMovimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en Venezuela
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahua
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karina
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fisca
 

ExpReg PERL titulo

  • 1. Programación en perl Introducción a expresiones regulares
  • 2. ¿Qué es una expresión regular? Una expresión regular es una plantilla o patrón que se compara con una cadena de texto. El resultado de esta comparación es que la cadena de texto coincide o no coincide con ese patrón. No existe “coincide a medias” o “casi coincide” o “esta parte sí pero esta otra no”
  • 3. Ejemplo de uso 1.$_ = "yabba dabba doo"; 2.if (/abba/) { 3.  say "¡Coincide!n"; 4.} En perl, las expresiones regulares forman parte de la propia sintaxis del lenguaje Se evalúa el cuerpo del if si la secuencia ‘abba’ está en la cadena $_
  • 4. Operadores $string =~ /REGEXP/ -> devuelve verdadero si la cadena coincide con el patrón $string !~ /REGEXP/ -> devuelve falso si la cadena coindice con el patrón
  • 5. ¿Cómo hay que leer un patrón? El patrón /abba/ no es “la palabra abba”. El motor de expresiones regulares interpreta el patrón como: un caracter a seguido de un caracter b seguido de un caracter b seguido de un caracter a
  • 6. Cuantificadores + carácter precedente aparece 1 o más veces ejemplo: /a+lfonso/ * carácter precedente aparece 0 o más veces ejemplo /a*lfonso/ ? carácter precedente aparece una o ninguna vez ejemplo /alfon?so/ {min,max} número mínimo y máximo de ocurrencias ejemplo /alfons{4,6}o/
  • 7. . y [] . cualquier carácter distinto de n ejemplo /a.*lfonso/ ¿qué ocurre si aplicamos el patrón a la siguiente cadena: akksdffonsofonso? [ ]! lista de opciones ejemplo /[aA]lfons[oO]/ Admite rangos [a-z] [A-Z] [0-9] Si queremos incluir el - tenemos que ponerlo al principio [-aeiou]
  • 8. [^ ] [^ ] exclusión: /b[^aeiouAEIOU]/ primer carácter de una palabra siempre que este caracter no sea a, e, i, o, u, A, E, I, O, U.
  • 9. Escapado Si queremos incluir en el patrón alguno de los caracteres anteriores, hay que escaparlos /www.google.com/
  • 10. Posiciones b límite de palabra (espacio, tabuladores, puntos, comas, guiones, principio y fin de línea, etc) /[aA]lfo?nsob/ B no debe haber un límite de palabra /Bola/ ^ principio de cadena $ fin de cadena
  • 11. Posiciones Dada la cadena: Este es un curso de perl. ¿Qué patrón dará una coincidencia positiva? perlb perlb$ perlb.$
  • 12. () Se utilizan para agrupar partes de un patrón. /pepe+/ encajaría con pepeeeeeee /(pepe)+/ encajaría con pepepepepepe Cuidado con /(pepe)*/ esto encajaría con cualquier patrón
  • 13. () Los paréntesis permiten reutilizar parte de la cadena coincidente dentro de la propia expresión regular: /(.)1/ encuentra cualquier carácter que vaya seguido de sí mismo. Se pueden poner varios paréntesis dentro de una misma expresión regular. Perl los asignará a las referencias 1, 2, 3, etc según su orden de apertura ignorando la anidación. /(OS ([Xx]) (.+))/ aplicado a la cadena OS X Lion 1 ->OS X Lion 2 -> X 3 -> Lion
  • 14. () A partir de perl 5.10 es posible hacer referencia a un grupo usando la notación g{N} 1 -> g{1} Supongamos qué tenemos el siguiente patrón: /(.)111/ y la cadena aa11bb Perlo no sabe si estamos diciendo 1 seguido de 11 o 11 seguido de 1 o 111 Para esto se utiliza la nueva notación /(.)g{1}11/
  • 15. Alternativa: | /luis|angel|pepe/ ->encajaría con cualquier cadena que contuviese luis o angel o pepe. /Luis (y|o) Miguel/
  • 16. Clases de caracteres d números s espacio, form-feed, tabulador, nueva línea y retorno de carro. R (perl 5.10) cualquier tipo de salto de línea (no tenemos que preocuparnos por el formato de fichero, sistema operativo, etc) w caracteres [a-zA-Z0-9_]
  • 17. Opciones /PATRON/OPCIONES i no diferencia entra mayúsculas y minúsculas /pepe/i coincidiría con Pepe, pepe, PePe, PEPE s hace que . también incluya el salto de línea x hace que se ignoren espacios, tabuladores, comentarios y saltos de línea en la expresión regular: / [0-9]+ # Esto es un comentario [#] # el caracter “#” /x
  • 18. Variables especiales $1, $2, $3 -> contienen la parte del patrón encerrada en su respectivo paréntesis $& patrón encontrado $` lo que precedía al patrón encontrado $’ lo que sucede al patrón encontrado
  • 19. Ejercicios ¿qué patrón usarías para localizar una página web como www.protrainning.com, mail.yahoo.com, etc? Utilizando el fichero last.txt: calcular todas las veces que se ha reiniciado el ordenador en el mes de noviembre evaluar las veces que Alfonso ha entrado más tarde de las 8 y si supera las 5 veces, avisar de que es un vago. Calcular la hora mínima y máxima a la que root ha accedido y el tiempo que ha estado activo.
  • 20. Buscar y reemplazar s/REGEXP/SUSTITUTO/opciones Opciones: i !ignora mayúsculas y minúsculas g!busca y sustituye todas las ocurrencias e!considera SUSTITUTO una expresión y la evalúa s/d{3,8}/9*9/e -> sustituye 456 por 81
  • 21. Ejemplos de patrones Localizar variables en un script perl mys+[$@%][a-zA-Z][a-zA-Z_]*b
  • 22. Ejemplos de patrones Localizar una IP: Es importante saber qué buscamos para definir nuestra expresión regular ¿nos vale este patrón d{1,3}.d{1,3}.d{1,3}.d{1,3} Depende, ya que este patrón encuentra 999.999.999.999 que no es una IP válida Podemos capturar cada número en $1, $2, $3, $4 y validarlo a posteriori Podemos utilizar este patrón [01]?d?d|2[0-4]d|25[0-5] . [01]?d?d|2[0-4]d|25[0-5] . [01]?d?d|2[0-4]d|25[0-5] . [01]?d?d|2[0-4]d|25[0-5]
  • 23. Ejemplos de patrones Localizar números en coma flotante primer intento:! [-+]?[0-9]*.?[0-9]* MALO: ENCAJA CON CUALQUIER CADENA YA QUE TODOS LOS CARACTERES SON OPCIONALES segundo intento:: lo que es opcional es el decimal y los números siguientes, debe haber al menos un número [-+]?[0-9]+(.[0-9]*)? tercer intento: falta que encuentre números como .0098 lo hacemos utilizando un or [-+]?[0-9]+(.[0-9]*)?|[-+]?(.[0-9]+) Sigue sin funcionar ya que va a encontrar, por ejemplo 123.1234.1234 Si esta expresión regular es buena o no dependerá del contexto Cuarto intento s[-+]?[0-9]+(.[0-9]*)?|[-+]?(.[0-9]+)s
  • 24. “looking around” (?=...) -> mira hacia la derecha (?<= ... ) -> mira hacia la izquierda ejemplo /alf(?=onso)/ -> sólo encuentra la cadena “alf” si esta va seguida de “onso” Estos operadores no consumen texto ejemplo /(alf(?=onso)|onso)/ Sirven para encontrar posiciones: Supongamos que tenemos un texto en el que hay muchos “alfono” en lugar de alfonso. Podríamos utilizar la siguiente expresión para corregir el error: s/(?<=alfon)(?=ob)/s/g Ejercicio: dado un número 1234123 meter los separadores de miles, es decir, reescribir el número como 1.234.123
  • 25. Ejercicios Utilizando el fichero error.log.1. Con objeto de enviar este fichero a una lista de correo pública, se desea lo siguiente: Sustituir las direcciones IP por XXX.XXX.XXX.XXX Sustituir las versiones de los programas Apache, mod_jk, mod_ssl y open_ssl ! por la cadena ---obfuscated for security---

Notas del editor

  1. \n
  2. \n
  3. \n
  4. Este operador s&amp;#xF3;lo encuentra la primera ocurrencia del patr&amp;#xF3;n. Luego veremos c&amp;#xF3;mo hacemos para encontrar todas las ocurrencias en la cadena.\n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. Aparte de caracteres, los patrones tambi&amp;#xE9;n pueden encontrar posiciones determinadas\n\nver guion posiciones.pl\n
  11. ver guion posiciones.pl\n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n