BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la...
Transcript of BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la...
![Page 1: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/1.jpg)
BUSCANDO PATRÓN CON EXPRESIONES REGULARES
![Page 2: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/2.jpg)
¡HOLA!Soy Pablo LópezEstoy aquí para enseñaros a lidiar con expresiones regulares. Puedes encontrarme en @desarrollowp
2
![Page 3: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/3.jpg)
1.Expresiones regularesBreve introducción...
3
![Page 4: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/4.jpg)
“
”
Las expresiones regulares son patrones utilizados para encontrar una determinada combinación de caracteres dentro de una cadena de texto.
![Page 5: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/5.jpg)
Expresiones regulares => regex
▸ No se consideran lenguaje de programación▸ Son utilizadas para buscar patrones, realizar
operaciones de sustitución, validaciones, etc...▸ Se utilizan en HTML5, JavaScript, PHP… con
pequeñas diferencias entre ellos▸ Se leen siempre de izquierda a derecha
5
![Page 6: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/6.jpg)
“
”
Algunos desarrolladores cuando se enfrentan a un problema piensan que la solución es usar expresiones regulares. En este momento, ya tienen dos problemas
-- Jamie Zawinski
![Page 7: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/7.jpg)
La siguiente secuencia sigue con...
2
7
4 8
16 32 64
![Page 8: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/8.jpg)
Pero también puede seguir con...
2
8
4 8
10 14 16
![Page 9: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/9.jpg)
Ó también con...
2
9
4 8
7004
![Page 10: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/10.jpg)
Polinomio de Lagrange
La serie 2, 4, 8 obviamente podría continuar con 16, pero también por 10 ó 7004. Es siempre posible encontrar una regla. Todo depende de lo complicada que sea la regla.
10
f(x) = 1165 X3 - 6989 X2 + 12814 X - 6988
![Page 11: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/11.jpg)
“
”
La satisfacción cuando clavas una expresión regular es directamente proporcional al miedo a no saber si tuviste en cuenta todas las casuísticas.
-- Pablo López
![Page 12: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/12.jpg)
2.Caracteres y MetacaracteresNotación y convenciones...
12
![Page 13: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/13.jpg)
Metacaracteres
▸ ^ Inicio de regex▸ $ Fin de regex▸ * Coincide con lo anterior cero o más veces▸ + Coincide con lo anterior una o más veces▸ ? Coincide con lo anterior cero o una vez▸ - Definir un rango (A-Z)
13
![Page 14: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/14.jpg)
Metacaracteres
▸ { } Repetición▸ ( ) Agrupamiento▸ [ ] Un carácter o rango de caracteres▸ . Cualquier carácter, excepto salto de línea▸ \ Escape▸ | Elementos alternos▸ ! Negación
14
![Page 15: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/15.jpg)
/.a.a.a/El punto es el comodín, representa cualquier carácter excepto el salto de línea
Metacaracter comodín => .
Matchesmañanabananapapayafabada
15
![Page 16: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/16.jpg)
Caracteres especiales
▸ \t Tabulador▸ \v Tabulador vertical▸ \r Retornos de carro▸ \n Nueva línea▸ \e Escape▸ \0 Null
16
![Page 17: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/17.jpg)
Conjunto de caracteres
Definiremos un conjunto de caracteres por medio de corchetes [ ]. Evalúa caracteres, NO palabras. No importa el orden.
▸ /[aeiou]/▸ /[áéíóú]/▸ /c[ao]sa/ casa, cosa▸ /c[oa]sa/ casa, cosa
17
![Page 18: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/18.jpg)
Rango de caracteres
Mediante corchetes y guiones medios.
▸ /[a-z]/ (alfabeto inglés, sin acentos ni “ñ”)▸ /[A-Z]/▸ /[0-9]/▸ /[a-zA-z0-9]/▸ /[á-ü]/
Deben escribirse en orden unicode
18
![Page 19: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/19.jpg)
Conjunto negativo de caracteres
El carácter ^ dentro de los corchetes es una negación de uno de los conjuntos de caracteres.
▸ /[^aeiou]/▸ /[^"#$%&/()=*]/
19
![Page 20: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/20.jpg)
Metacaracteres en conjunto de caracteres
Los metacaracteres dentro de los conjuntos de caracteres ya están "escapados", excepto los siguientes:
▸ ] - ^ /
▸ /var[[(][0-9][\])]/ var(9) ó var[9]
20
![Page 21: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/21.jpg)
Abreviaciones de conjuntos de caracteres
▸ \d Dígitos [0-9]▸ \w Caracteres [a-zA-Z0-9_]▸ \s Whitespaces [ \t\r\n]▸ \D No dígito [^0-9]▸ \W No caracteres [^a-zA-Z0-9_]▸ \S No whitespaces [^ \t\r\n]
21
![Page 22: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/22.jpg)
Flags
▸ /regex/▸ /regex/g global No se detiene ante la primera coincidencia
▸ /regex/i insensitive Busca en mayúsculas y minúsculas
▸ /regex/m multiline ^ y $ aplican a cada línea, no a toda la cadena
▸ /regex/s single line . coincidirá con saltos de línea
▸ /regex/gms
22
![Page 23: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/23.jpg)
3.Expresiones de repeticiónMetacaracteres, cuantificadores, greedy, lazy...
23
![Page 24: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/24.jpg)
Metacaracteres de repetición
▸ * Cero o más veces el elemento precedente▸ + Una o más veces el elemento precedente▸ ? Cero o una vez el elemento precedente
▸ /as*/ a, as, asss▸ /as+/ a, as, asss▸ /as?/ a, as, asss
24
![Page 25: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/25.jpg)
Cuantificadores de repetición
▸ {num} Num veces el elemento precedente▸ {min,max} Elemento precedente entre min - max▸ {min,} Elemento precedente min veces
▸ /\d{4}/ 4 dígitos exactamente▸ /\d{4,8}/ Entre 4 y 8 dígitos, ambos inclusive▸ /\d{4,}/ Mínimo 4 dígitos
25
![Page 26: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/26.jpg)
Expresiones Greedy (codiciosas)
Las expresiones regulares son greedy (codiciosas) por defecto. Siempre van a intentar seleccionar la cadena más grande
/<p>(.*)<\/p>/
(<p>lorem ipsum</p><p>dolor sit amet</p>)
26
![Page 27: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/27.jpg)
Expresiones Lazy (perezosas)
Serán lazy (perezosas) añadiendo una ? a nuestra expresión regular
▸ Greedy Lazy▸ (.*) (.*?)▸ (.+) (.+?)▸ (?) (??)▸ {min.max} {min,max}?
27
![Page 28: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/28.jpg)
Greedy vs Lazy
/<p>(.*)<\/p>/
(<p>lorem ipsum</p><p>dolor sit amet</p>)
/<p>(.*?)<\/p>/
(<p>lorem ipsum</p>)(<p>dolor sit amet</p>)
28
![Page 29: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/29.jpg)
4.Agrupar y alternarCapturando bloques de información...
29
![Page 30: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/30.jpg)
Metacaracteres para agrupar
Por medio de los paréntesis () podemos agrupar expresiones regulares.
▸ Aplicar operadores de repetición a grupos▸ Hacer las expresiones más legibles▸ Capturar un grupo para matchear o reemplazar▸ No es posible agrupar dentro de un conjunto de
caracteres [()]
30
![Page 31: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/31.jpg)
Metacaracteres para alternar
Por medio del metacaracter | (pipe) podemos alternar expresiones regulares. Equivale a OR.
▸ Matchea expresiones de izquierda a derecha▸ Tienen prioridad las expresiones de la izquierda▸ Se suele alternar expresiones dentro de ()
/<(p|div)>/
31
![Page 32: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/32.jpg)
Expresiones Eager (ansiosas)
Las expresiones regulares son eager (ansiosas).
▸ /(moto|motocicleta)/ motomotocicleta
▸ /moto(cicleta)?/ motomotocicleta
32
![Page 33: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/33.jpg)
5.Trabajando con gruposGrupos, referencias, no captura, identificadores...
33
![Page 34: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/34.jpg)
Grupos y referencias
Las expresiones agrupadas entre paréntesis () por defecto son “capturadas”. Podemos referenciarlos del \1 al \9.
▸ /<(div|p)>.*<\/(\1)>/ ✔ <div>Hola mundo</div>
✔ <p>Hola mundo</p>✘ <div>Hola mundo</p>
34
![Page 35: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/35.jpg)
Grupos de no captura
No se captura un grupo anteponiendo ?:
▸ /(http|https):\/\/([^\/\r\n]+)(\/[^\r\n]*)?/
35
![Page 36: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/36.jpg)
Grupos de no captura
No se captura un grupo anteponiendo ?:
▸ /(?:http|https):\/\/(?:[^\/\r\n]+)(\/[^\r\n]*)?/
36
![Page 37: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/37.jpg)
Nombrar grupos
Obtendremos una clave en lugar de un número en el array de resultados mediante (?<name>...), (?'name'...) o (?P<name>...).
▸ /(?<scheme>.*):\/\/(?<domain>[^\/\r\n]+)(?<path>\/[^\r\n]*)?/
37
![Page 38: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/38.jpg)
6.AsercionesSi se cumple o no una condición pasada o futura...
38
![Page 39: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/39.jpg)
Positive Lookahead (?=...) (Si termina en…)
Futuro positivo. Sólo matchea si encuentra una condición futura. La condición no es capturada.
▸ /guarda(?=barros|bosques)/
✔ guardabarros✔ guardabosques✘ guardaespaldas
39
![Page 40: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/40.jpg)
Negative Lookahead (?!...) (Si no termina en…)
Futuro negativo. Sólo matchea si no encuentra una condición futura. La condición no es capturada.
▸ /guarda(?!barros|bosques)/
✘ guardabarros✘ guardabosques✔ guardaespaldas
40
![Page 41: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/41.jpg)
Positive Lookbehind (?<=...) (Si empieza por…)
Pasado positivo. Sólo matchea si encuentra una condición pasada. La condición no es capturada.
▸ /(?<=solu|informa)ción/
✔ Tengo la información✔ con la solución✘ de la ecuación
41
![Page 42: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/42.jpg)
Negative Lookbehind (?<!...) (Si no empieza por…)
Pasado negativo. Sólo matchea si no encuentra una condición pasada. La condición no es capturada.
▸ /(?<!solu|informa)ción/
✘ Tengo la información✘ con la solución✔ de la ecuación
42
![Page 43: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/43.jpg)
7.CondicionalesCapturar en caso de que se cumpla una condición...
43
![Page 44: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/44.jpg)
Condicionales if-then-else
Si if se evalua como true, se intentará matchear con then, en caso contrario con else.
▸ /(This condition)(?(1) is true| is false)/
This condition is true This other one is false
44
![Page 45: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/45.jpg)
8.Expresiones regulares legiblesPara no dejar una mala herencia...
45
![Page 46: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/46.jpg)
Expresiones regulares legibles
En ocasiones nos encontramos con un chorizo de expresión regular en un método sin comentar.
▸ /(?:(?=.{17}$)97[89][ -](?:[0-9]+[ -]){2}[0-9]+[ -][0-9]|97[89][0-9]{10}|(?=.{13}$)(?:[0-9]+[ -]){2}[0-9]+[ -][0-9Xx]|[0-9]{9}[0-9Xx])/
Más info
46
![Page 47: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/47.jpg)
Expresiones regulares legibles
▸ /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s).*$/
"/^" . //Inicio de regex"(?=.*\d)" . //Si existe al menos un número"(?=.*[a-z])" . //Si existe al menos una minúscula"(?=.*[A-Z])" . //Si existe al menos una mayúscula"(?!.*\s)" . //Que no existan espacios".*" . //Todo, cero o más veces"$/" //Fin de regex
47
![Page 48: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/48.jpg)
9.¿Y en WordPress?Disponemos de algunas funciones auxiliares...
48
![Page 49: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/49.jpg)
get_shortcode_regex()
Devuelve la expresión regular utilizada para buscar shortcodes dentro de un contenido.
Combina todas las etiquetas de shortcodes registrados en una sola expresión regular.
49
![Page 50: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/50.jpg)
get_shortcode_regex()50
![Page 51: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/51.jpg)
wp_spaces_regexp()
Devuelve la expresión regular para caracteres de espacios en blanco comunes: espacios, nuevas líneas, tabs,   y el nbsp UTF-8.
Evita posibles errores en la codificación de un espacio
51
![Page 52: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/52.jpg)
wp_spaces_regexp()
$spaces = wp_spaces_regexp();$pattern = '/<p>' // Opening paragraph . '(?:' . $spaces . ')*+' // Optional leading whitespace . '(.*)' // The regex . '(?:' . $spaces . ')*+' // Optional trailing whitespace . '<\\/p>/'; // Closing paragraph
52
![Page 53: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/53.jpg)
10.¿Al lío?¡Abrid vuestros portátiles!
53
![Page 54: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/54.jpg)
r/VyrqceAñade el atributo rel=”nofollow” a los enlaces
54
https://regex101.com/
![Page 55: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/55.jpg)
r/zmJ99VExtrae las URLs de los enlaces que aparecen en el siguiente texto
55
https://regex101.com/
![Page 56: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/56.jpg)
r/krSO2aExtrae los shortcodes para su eliminación
56
https://regex101.com/
![Page 57: BUSCANDO PATRÓN CON EXPRESIONES REGULARES...Flags /regex/ /regex/g global No se detiene ante la primera coincidencia /regex/i insensitive Busca en mayúsculas y minúsculas /regex/m](https://reader036.fdocumento.com/reader036/viewer/2022071210/602216178490392f6d6ac532/html5/thumbnails/57.jpg)
57
¡GRACIAS!¿Alguna pregunta?Puedes encontrarme en @desarrollowp
Presentation template by SlidesCarnival