====== Expresiones Regulares ======
Las expresiones regulares son usadas para encontrar en textos ciertos patrones, ya sea un grupo de palabras que se repite, unos carácteres entre otros...
===== Basicas 1 =====
En un texto como...
El perro feo se comio 25 cocos con trigo, luego se tiro un peo.
\\
__La expresión regular más sencilla es la que indica varios o un sólo carácter:__
\\ **o** \\ El perro feo...
\\ **feo** \\ El perro feo se comio 25 cocos con trigo, luego se tiro un peo.
\\
\\
__Podemos elegir "una u otra", por ejemplo...__
\\ **feo|peo** \\ El perro feo se comio 25 cocos con trigo, luego se tiro un peo. \\ //Si no indicasemos nada seleccionaría todo.//
\\
\\
__Un punto significa un carácter cualquiera (excepto el de newline)__
\\ **.e** \\ El perro feo se comio 25 cocos con trigo, luego se tiro un peo.
\\
\\
__Para buscar el punto tendremos que usar el "carácter de escape"__
\\ **\.** \\ El perro feo se comio 25 cocos con trigo, luego se tiro un peo.
\\ **\n** //Corresponde al newline//
\\ **\t** //Corresponde a una tabulación//
\\ **\b** //Corresponde al carácter en blanco//
\\ **^** //Es el inicio de línea//
\\ **\b.e\b** \\ El perro feo se comio 25 cocos con trigo, luego se tiro un peo.
\\ **\b.e.\b** \\ El perro feo se comio 25 cocos con trigo, luego se tiro un peo.
===== Basicas 2 =====
__El signo + indica que el carácter que le precede debe aparecer //al menos// una vez__ \\
**ho+la** encontraría: //hola, hoola, hooola//. \\ \\
__En cambio el signo * indica que puede o no aparecer una o más veces__ \\
**0*42** encontraría: //42, 0042, 042//. \\ \\
__? indica que ha de aparecer 0 o una vez el carácter que le precede__ \\
**cas?quivano** encontraría //caquivano y casquivano//. \\ \\
__Los paréntesis indican 'agrupar'__ \\
Por ejemplo **(p|m)adre** encontraría tanto //padre// como //madre//. O **(des)?amor** encontraría //amor// y //desamor//. \\ \\
__Los corchetes__ \\
Son usados para elegir entre dos letras **[tT]he** encontraría //the, The// pero no tHe. \\
Para indicar rangos **[a-z]** encontraría todas las minusculas, **[a-zA-Z]** todas las letras, mayusculas o minusculas. Por ejemplo: **[a-zA-B]ola** encontraría //aola, cola, mola, Bola, bola...// pero no 4ola, Cola, %ola... Otro rango sería el **[0-9]**, o simplemente indicar los carácteres (para signos especiales no son necesarios el carácter de escape): **[x.+3]avier**, encontraría //xavier, +avier, .avier, 3avier//. \\ \\
__Grupos__ \\
Existen palabras que agrupan conjuntos de carácteres, por ejemplo los que encuentran números y letras, espacios en blanco... //- Esto no es compatible con todos los sistemas -//.
* **[:alnum:]** alfanuméricos (letras y números)
* **[:alpha:]** alfabéticos (letras)
* **[:cntrl:]** de control
* **[:digit:]** dígitos
* **[:graph:]** gráficos
* **[:lower:]** minúsculas
* **[:print:]** imprimibles
* **[:punct:]** de puntuación
* **[:space:]** espacios
* **[:upper:]** mayúsculas
* **[:xdigit:]** dígitos hexadecimales
\\
__Repeticiones__ \\
En un texto como este:
Xooo
oXoo
ooXo
oooX
**o{3}** encontraría: Xooo y oooX \\
**o{2,3}** , dos o tres o's, encontraría: Xooo oXoo ooXo oooX ; que es lo mismo que encontraría **o{2,}**, es decir, 2 o más. \\ \\
__Algunas expresiones regulares__ \\
** _.*_ ** La cadena máxima que esté entre dos signos: '_'. Es decir, cogería frases enteras, algo así: "_hola _caracola_ qué haces aquí tan sola?_"\\
**_(.*?)_** Cogería palabras sueltas: "_caracola_" \\
===== Xtra =====
* **(?!pattern)** Mira si no cumple con el patrón.
===== Ejemplos =====
===== Archivos y artículos =====
* {{otros:regex:regex_in_wikipedia.pdf|Artículo de la wikipedia}}
* Video
* Cheat Sheet: \\
{{otros:regex:regular_expressions_cheat_sheet.png?300px|cheat sheet}}