expresiones regulares - ubuntuperonista/wiki_tp GitHub Wiki
Las //Expresiones Regulares//, o **RegEx**, son patrones que podemos usar para encontrar una determinada combinación de caracteres dentro de un texto. Las //RegEx// proporcionan una manera muy flexible y poderosa de buscar o reconocer cadenas de texto para luego imprimirlas, modificarlas o cambiar su formato.
Los lenguajes de programación más conocidos soportan RegEx: C, Ruby, XML, Visual Basic, Unix Shell, Java, JavaScript, Python y, por supuesto, Perl.
Existen dos tipos de RegEx en el estándar POSIX: //Expresiones Regulares Básicas// (BRE) y //Expresiones Regulares Extendidas// (ERE). Luego están las PCRE (Expresiones Regulares Compatibles con Perl, escritas en Lenguaje C e inspiradas en Perl.
>Las RegEx fueron definidas en la década del 1950 y tienen su origen en Regular Events, una notación creada por Stephen C. Kleene, matemático estadounidense. No debemos confundir las RegEx con los comodines de Shell, ya que éstos últimos __operan únicamente con los nombres de archivos__.
Las expresiones regulares están compuestas por
* //Caracteres ordinarios// como ''espacio en blanco'', ''_'', ''A-Z'', ''a-z'', ''0-9''. * //Metacaracteres de RegEx//, son abreviaciones cuyo significado se expande para significar caracteres ordinarios.
^ **Metacaracter RegEx** ^ **Significado** ^ | * | cero o mas iteraciones del carácter inmediato que lo precede. | | . | cualquier carácter ordinario, excepto el ASCII de nueva linea. | | [carácter(es)] | cualquiera de los caracteres especificados entre corchetes; puede usarse guion - para delimitar un rango de caracteres tal como [a-f], [1-5], etcétera. | | ^ | comienzo de línea en un fichero. | | $ | final de una línea en un fichero. |
|. | Cualquier carácter excepto Nueva Línea | |\w |Coincide cualquier palabra formada por caracteres (alfanuméricos + _ | |\W |Coincide cualquier no palabra formada por caracteres | |\d |Coincide cualquier dígito (0-9) | |\D |Coincide cualquier no-dígito. | |\s |Coincide cualquier caracter de espacio en blanco. | |\S |Coincide cualquier caracter que no sea espacio en blanco. |
| ^ | Coincide el inicio de una cadena. | | $ | Coincide con el final de una cadena | | \b | Coincide con una palabra límite | | \B | Coincide con un límite que no es palabra |
| * | Coincide 0 o mas del elemento precedente. | | + | Coincide 1 o mas del elemento precedente. | | ? | Coincide 0 o 1 del elemento precedente. | | {//n//} | Coincide exactamente //n// ocurrencias del elemento precedente. | | {//n//,} | Coincide //n// o mas ocurrencias. | | {//n//,m} | Coincide entre //n// y //m// ocurrencias. |
| [abc] | Coincide cualquiera de //a//, //b// o //c//. | | [^abc] | Coincide cualquier caracter, escepto //abc//. | | [a-z] | Coincide cualquier caracter de //a// hasta //z//. | | [0-9] | Coincide cualquier dígito de //0// hasta //9//. |
| (...) | Captura un conjunto | | (?:...) | captura un conjunto | | | | Captura la expresión antes o después del caño | |
| \ | anula el significado ("escapa") un caracter o metacaracter RegEx. |
|\d{2}-\d{4}-\d{4} | Coincide un número telefónico del formato (12)-3456-7890 | |\w+@\w+\.\w+ | Coincide una dirección de correo electrónico. |
| . | Cualquier carácter excepto Nueva Línea | | ^$ | Busca líneas vacías (realmente caracteres ASCII de "nueva línea") | | /cadena/ | Busca la cadena cadena | | [cadena] | Busca coincidencias de cualquier caracter contenido en cadena | | [^cadena] | Busca coincidencias de cualquier caracter no contenido en cadena | | g/cadena/ | Busca globalmente cadena en el documento | | g/cadena1/s//cadena2/ | Sustituye globalmente cadena1 por cadena2 | | alternativa1|alternativa2 | Busca coincidencias entre alternativa1 y alternativa2 | | () | Altera el orden de la expresión regular |