Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Expresiones regulares

4,703 views

Published on

Transparencias Clase de Expresiones Regulares

Expresión regular, a menudo llamada también patrón, es una expresión que describe un conjunto de cadenas sin enumerar sus elementos.

Published in: Education
  • Be the first to comment

Expresiones regulares

  1. 1. Expresiones Regulares Jordán Pascual Espada
  2. 2. Introducción  Expresión regular, a menudo llamada también patrón, es una expresión que describe un conjunto de cadenas sin enumerar sus elementos. Wikipedia
  3. 3. Expresión regular  Conjunto de caracteres y metacaracteres que definen reglas sintácticas para la evaluación de una cadena de texto Metacaracteres ab+ *.pdf
  4. 4. Metacaracteres  No se representan a ellos mismos  Cada uno tiene un significado especial  Algunos de los metacaracteres mas habituales son: $ + * - ? [ ] .
  5. 5. ¿Para que sirven las expresiones regulares?  Reconocimiento y extracción de información en textos  Buscar correos electrónicos y DNIs en un documento  Buscar el número de veces que se repiten expresiones  Etc..  Validar y analizar datos de entrada (formularios)  Formato de la de entrada  Rangos de valores y caracteres admitiditos  Longitud de la cadena  Construir cadenas de texto  Generar cadenas a partir de expresiones regulares
  6. 6. ¿Para que sirven las expresiones regulares?  Analizar y modificar textos  Eliminar dobles espacios  Sustituir caracteres específicos  Especificar patrones de coincidencia (Navegador, entornos de programación, SO, etc.)  Definir elementos de la gramática en un lenguaje  Muchas otras cosas…
  7. 7. En resumen  Son un mecanismo muy potente para procesar cadenas de caracteres
  8. 8. Donde se utilizan  Principalmente en:  En comandos y búsquedas dentro de los sistemas operativos  Lenguajes de programación  Aplicaciones Software (Word, Notepad, etc)  No siempre se utilizan igual, existen diferentes estilos de expresiones regulares, con diferentes capacidades  La mayoría se basan en los mismos principios
  9. 9. Expresiones regulares Algunas personas cuando se enfrentan a un problema piensan "Ya sé, ¡usaré expresiones regulares!"
  10. 10. Expresiones regulares Ahora tienen dos problemas. Jamie Zawinski , Responsable del Navegador Netscape 1.1 Contribuidor de proyectos Mozilla
  11. 11. Expresiones regulares ^(X(-|.)?0?d{7}(-|.)?[A-Z]|[A-Z] (-|.)?d{7}(-|.)? [0-9A-Z]|d{8}(-|.)? [A-Z])$ Expresión regular Certificado de identificación Fisca España
  12. 12. Ejemplos de expresiones regulares  Si queremos analizar coincidencias en una cadena. ab abecedario taza tabaco
  13. 13. Evaluador de expresiones regulares  La clase Regex en C#  IsMatch: Indica si la expresión regular especificada en el constructor Regex encuentra una coincidencia en una cadena de entrada indicada.  Matches: Busca en la cadena de entrada especificada todas las apariciones de una expresión regular. Retorna un objeto MatchCollection que contiene todas las coincidencias.
  14. 14. Evaluador de expresiones regulares  La clase Regex en C#  Match: Busca en la cadena de entrada especificada la primera aparición de la expresión regular indicada.  Escape/Unescape : Convierte reemplaza los metacaracteres de una cadena por caracteres literales. Esto indica al motor de expresiones regulares que interprete los caracteres literalmente en lugar de como metacaracteres.
  15. 15. Evaluador de expresiones regulares  La clase Regex en C#  Replace: Remplaza todas las coincidencias detectadas en la cadena entrada.  Split: Devuelve un array de cadenas, formado a partir de la división de una cadena por sus coincidencias con una expresión regular.
  16. 16. Evaluador de expresiones regulares  Creamos un nuevo proyecto Console Application C# desde Microsoft Visual Studio
  17. 17. Evaluador de expresiones regulares  Funcionalidad :  Parte de una colección de cadenas de texto (Array)  Define un patrón para una expresión regular Regex.IsMatch (coincidencia)  Evalúa cada una de las cadenas de texto de la colección  Notifica si en la cadena de texto hay o no alguna coincidencia respecto al patrón.
  18. 18. Evaluador de expresiones regulares  Implementación de un evaluador de expresiones regulares
  19. 19. Evaluador de expresiones regulares  Implementación de un evaluador de expresiones regulares
  20. 20. Expresión regular  Conjunto de caracteres y metacaracteres que definen reglas sintácticas para la evaluación de una de una cadena de texto Metacaracteres ab+ *.pdf
  21. 21. Representaciones de caracteres  Cualquier carácter alfa numérico  Letras y números (@, #, …)  Los metacaracteres especiales necesitan ser precedidos de por ejemplo . , * , - , ( , ), , ^ $  Ejemplos:  Cadenas: {"Aplastar","Haragán","Encargado","Selección"}  Expresiones: a , b , e  Cadenas: { "Apla.star", "Hara.gán", "Enca*rgado", "Selec-ción" };  Expresiones: . , *, -
  22. 22. Representaciones de caracteres  Cualquier carácter alfa numérico  Letras y números (@, #, …)  Los caracteres que no sean letras y números necesitan ser precedidos de por ejemplo . , * , - , ( , )  Ejemplos:  Cadenas: {"Aplastar","Haragán","Encargado","Selección"}  Expresiones: a , b , e  Cadenas: { "Apla.star", "Hara.gán", "Enca*rgado", "Selec+ción" };  Expresiones: . , *, +
  23. 23. Representaciones de caracteres  d Representa cualquier digito de 0-9  D Representa lo contrario a d  Ejemplos:  Cadenas: { "122", "Perseguir", "Antena23", "Aceituna" }  Expresiones: d , D  Cadenas: { "a2323", "b", "Paisaje", "Diario" }  Expresiones: ad , aD
  24. 24. Representaciones de caracteres  w Representa cualquier letra o digito (incluso letras especiales o acentuadas como ñ, ç, etc)  No comprende los espacios en blanco ni el resto de caracteres especiales como , . @, #, $, %, C , ( , (espacio), etc  W Representa lo contrario a w  Ejemplos:  Cadenas: { "122", "ç", "#", " ", "antena23", "aceituna" };  Expresiones: w , W  Cadenas: { "122", "ç", "Firma", "Comida", "Egresados" }  Expresiones: aw, wa, aW
  25. 25. Representaciones de caracteres  s Representa cualquier espacio en blanco  No es buena idea utilizar los espacios para delimitar palabras, existen otros mecanismos  S Representa lo contrario a s  Ejemplos:  Cadenas: { "Alrededor", "El disco", "Firma", "El examen", "Castilla la mancha" }  Expresiones: s , Els
  26. 26. Representaciones de caracteres  Ejemplos:  Cadenas: { " 1 ", "2 ", " 3", " 4a ", " b "}  Expresiones: sds , s4a,sws  Cadenas: { "El Gato", "El perro", "1 Gato", "1 1"};  Expresiones: wsw, dsD, dssd
  27. 27. Otros elementos  t Tabulador (ASCII 9)  f Salto de página  n Salto de línea  O Carácter nulo
  28. 28. Conjuntos  Elementos de los conjuntos  [ ]: inicio y fin de conjunto  - : rango dentro del conjunto  ^ : negación del conjunto  [ ] Conjuntos  [a-z] de la a la z  [A-Z] de la A a la Z  [0-9] del 0 al 9  [a-z0-9] de la a a la z y del 0 al 9  [a-z0-9_] de la a a la z y del 0 al 9 y _
  29. 29. Conjuntos  [ ] Conjuntos  [a-zA-Z] de la a a la z y de la A a la Z.  [opk] Cualquiera de los caracteres o, p, k,  [oe] Cualquier de los caracteres o, e  [a-e] Cualquier letra entre a y e (es decir a, b, c, e)  [^a] Que no este el carácter a  [^a-e] Que no aparezcan letras entre a y e  Ejemplos:  Cadenas: { "Cerca", "Presentar", "ensalada", "141", "Cercado13" }  Expresiones: [a-z], [0-9], [e1] , [a-e]
  30. 30. Conjuntos  Ejemplos:  Cadenas: { "Chicos", "Chica", "Chico", "Chimo", "Chino" };  Expresiones: Chic[oa], Chic[oa]s, Chi[a-z]o, [^0-9]  Cadenas: { "Chicos", "Chica", "Chico", "Chimo", "Chino" };  Expresiones: Chic[^a], [a-z][A-Z], [^a],[rfm]
  31. 31. Repeticiones  {N} significa que la expresión se repite exactamente n veces  {N, } significa la expresión se repite N o mas veces.  {X, Y} significa la expresión se repite un mínimo de X veces y un máximo de Y.  Ejemplos:  Cadenas: { "www.Agrupar.com", "water", "windows", "Botánico"}  Expresiones: w{3} , w{1,} , w{2,3}  Cadenas: { "a1", "bb2334", "123", "b2222", "e333333" }  Expresiones: [a-z]{1,3}[0-9]{3,4}, D{1,2}d{4}
  32. 32. Repeticiones  Máximo y mínimo  Número de coincidencias Regex.Matches:  w -> w{1,3} -> 1 Coincidencia  ww -> w{1,3} -> 1 Coincidencia  www -> w{1,3} -> 1 Coincidencia  wwww -> w{1,3} -> 2 Coincidencias  wwwww -> w{1,3} -> 2 Coincidencias
  33. 33. Repeticiones  Ejemplos:  Cadenas: { "1221", "3614", "441244", "97" }  Expresiones: [12]{2,4},d{3}4  Cadenas: { "a1", "bb2334", "123", "b2222", "e333333" }  Expresiones: [a-z]{1,3}[0-9]{3,4}, D{1,2}d{4}  Cadenas: { "los perros", "las ardillas", "el gato", "la rana", "el 1" }  Expresiones: [loeas]{2,3}s[a-z]
  34. 34. Agrupaciones  ( ) Sirven para agrupar expresiones regulares  (ab) carácter ab agrupado  Ejemplos:  Cadenas: { "Acceso", "Espeso", "El Tractor", "Código fuente" }  Expresiones: (so){2}  Cadenas: { "3a3a3a a3a3", "D5D5D5D5D z1z1", "3a3a3a a3a3", "3a3a3a a3a3a" }  Expresiones: (dD){3}s{1,2}([a-z]d){2}
  35. 35. Alternancia  | Representa una alternancia entre expresiones , o una o otra.  Ejemplos:  Cadenas: { "la", "el", "ellos", "las" }  Expresiones: el|la , le|a , l(e|a)  Cadenas: { "Secreto", "Barro", "Carro,Tarro", "Espiral", "B"}  Expresiones: B|Tarro, la , (B|T)arro , D{8}|Barro
  36. 36. Metacaracteres  . Representa cualquier carácter Incluido el espacio  Ejemplos:  Cadenas: { "Acceso", "Espeso", "El Tractor", "Código fuente" }  Expresiones: . , A. , E.  Cadenas: { "color", "calor", "capo", "castor", "c r"};  Expresiones: c.l.r, c.{1,4}r  Cadenas: { "Osa polar", "Oso panda", "Oso pardo", "Oso gris"}  Expresiones: Os.sp, .{3}s[^g]
  37. 37. Metacaracteres  + Significa que la expresión se repite 1 mas veces  Ejemplos:  Cadenas: { "aaaa", "soso", "patoso", "Código fuente" }  Expresiones: (so)+, a+ , o+  Cadenas: { "tejer", "el mapa5", "140suerte", "e 50" };  Expresiones: (d+D+|D+d+) , w+s+d+  Cadenas:{ “koala", "collllor,", "El color", "El collar" };  Expresiones: col+[oa]r , [ck]ol+[oa]r ,
  38. 38. Metacaracteres  * Significa que se repite 0 o mas veces  Ejemplos:  Cadenas: { "aaaa", "soso", "patoso", “213213" }  Expresiones: w*, [a-z]*, [1-9]*  Cadenas: { “#cinco5555#", “#seis66666#", “#cuatro4444#", “#dos22#" };  Expresiones: #(cinco|seis)[56]*# , #[a-z]{4,5}d*#  Cadenas: { "int a =3;", "int a=345;", "float a = 4.5;", "bit b = 0;"};  Expresiones: [a-z]*s+D*s*=s*[d.]*;
  39. 39. Metacaracteres  ? Significa que se repite 0 o 1 vez  Ejemplos:  Cadenas: { "Ha", "Ha cantado", "a","Hab", "Hablabla" }  Expresiones: Ha(bla)?, [a-z]?, [1-9]?  Cadenas: { "Apila", "pila", "Atar;", "Atracar", "reloj" };  Expresiones: A?[a-z]+[ra] ,
  40. 40. Delimitadores  b Significa que coincide si es un limite de palabra (se suele incluir al principio y/o al final de las expresiones)  Se utiliza para buscar palabras  Las palabras no solo están delimitadas por espacios, también pueden estarlo por otro tipo de caracteres  ;  :  .  ,  =
  41. 41. Delimitadores  Ejemplos:  Cadenas: { "Hola", "ola", "La ola", "Pola", "olaola"};  Expresiones: bola, bolab  Cadenas: { "hola hola ", "hola Juan", "colegio", "Escalera" }  Expresiones: (bholab){2} , ob , b[A-Z]w*[na]b , b[^E]  Cadenas: { "Sol", "Las Espaldas", "El Almuerzo", "El Oro" };  Expresiones: b[a-zA-Z]{7,8}b , b.{3,6}ob  Cadenas: { "uno,dos", "Fin.Continua", "Uno=1", "Son:1,2,3" }  Expresiones: b[Uu]nob , bCon.*b , (b[1-3]b,?){3}
  42. 42. Delimitadores  B Significa que coincide si no es un limite de palabra  Ejemplos:  Cadenas: { "Hola", "ola", "La ola", "Pola", "olaola"};  Expresiones: Bola, Bolab  Cadenas: { "Diseño", "El Diseño", "Diseñador", "Países" };  Expresiones: BoB ,
  43. 43. Delimitadores  ^ Significa que la coincidencia se debe producir al inicio de la cadena (No confundir cadena con palabra)  Las validaciones web utilizan comúnmente este tipo de delimitadores de cadena, tanto el de inicio como el de final.  También podría ser al principio de la línea si se trabaja con RegexOptions.Multiline  Regex.Match(input, pattern, RegexOptions.Multiline);  Ejemplos:  Cadenas: { "refrigerador1", "do1 re1 mi1", "r", "1Alacrán", "Sur1" }  Expresiones: ^r, ^[rS]w+1, ^D
  44. 44. Delimitadores  A Significa que la coincidencia se debe producir al inicio de la cadena (Sin posibilidad de varias líneas)  Ejemplos:  Cadenas: { "refrigerador1", "do1 re1 mi1", "r", "1Alacrán", "Sur1" }  Expresiones: Ar, A[rS]w+1, AD
  45. 45. Delimitadores  $ Significa que la coincidencia se debe producir al final de la cadena o línea  También podría ser al principio de la línea si se trabaja con RegexOptions.Multiline  Regex.Match(input, pattern, RegexOptions.Multiline);  Ejemplos:  Cadenas: { "La bandera roja", "La bandeja azul", "El bar nuevo" };  Expresiones: bar$ , ^[A-Z].+[ao]$
  46. 46. Delimitadores  Z Significa que la coincidencia se debe producir al final de la cadena (o antes de un salto de línea)  z Significa que la coincidencia se debe producir al final de la cadena (Sin posibilidad de varias líneas)  Ejemplos:  Cadenas: { "La bandera roja", "La bandeja azul", "El bar nuevo" };  Expresiones: bar> , ^[A-Z].+[ao]Z
  47. 47. Look Around “Mirar al rededor”  Split de una cadena a partir de una expresión regular  @ "[#@] " encuentra #@ captura la posición y suprime el carácter  @"(?=[#@])" Positive Lookahead encuentra #@ captura la posición que lo precede  @"(?<=[#@])" Positive Lookbehind encuentra #@ captura la posición que le sigue o#dos o#dos
  48. 48. Look Around “Mirar al rededor”  Split de una cadena a partir de una expresión regular  @ “d " encuentra el digito y captura la posición y suprime el carácter  @"(?!d)" Negative Lookahead encuentra cada no coincidencia con el digito y captura la posición que lo precede  @"(?<!d)" Negative Lookbehind encuentra cada no coincidencia con digito y captura la posición que le sigue aA123 aA123
  49. 49. Ejercicios - Expresiones regulares  Expresión regular para validar:  Claves  6JKV-QPB8-RQ89-FW7T-PBJ7  T32RWFDMGFD2QGMH3P9G  GG4M.MGK7.HVXF.KHCF.KW6K  DNIs en varios formatos  55349061K, 74348275-Q, 19290989s  Palabras entre corchetes  [fuerza]  Comentarios en HTML  <!-- Mi comentario HTML-->
  50. 50. Ejercicios - Expresiones regulares  Expresión regular para validar:  Números de teléfono móvil  652881432 , +34652881432, 652 88 14 32, 652 881 432  Etiquetas HTML de títulos  <h1>…</h1> <H1>…</H1> <h2>…</h2> <H2>…</H2>  Una etiqueta ‘tag’ XML  <tag>…<tag>  Cualquier numero decimal  -0.9 9,32 -2 .11
  51. 51. Validación de expresiones regulares online  http://www.rexv.org/  http://regexpal.com/  http://www.regexplanet.com/advanced/java/index.html  http://www.metriplica.com/es/recursos/expresiones-regulares  http://www.regular-expressions.info/javascriptexample.html  http://www.regextester.com/
  52. 52. Referencias y enlaces de interés  Tutorial Expresiones regulares http://www.regular-expressions.info/tutorial.html  Guía de expresiones regulares Mozilla https://developer.mozilla.org/es/docs/Gu%C3%ADa_JavaScript_1.5/Expresiones_Regulares  La clase Regex .NET Framework http://msdn.microsoft.com/es-es/library/system.text.regularexpressions.regex.aspx

×