====== 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}}