====== Expresiones regulares ======
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 [[lenguaje_del_interprete_de_comandos#metacaracteres_comodines|comodines de Shell]], ya que éstos últimos __operan únicamente con los nombres de archivos__.
====Armado de Expresiones Regulares====
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. |
====Expresiones Regulares de búsqueda por coincidencia ====
===Coincidencia de Caracteres===
|''.'' | 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''. |
=== Anclas ===
| ''^'' | 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 |
=== Cuantificadores===
| ''*'' | 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. |
===Clases de caracteres===
| ''[''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//. |
===Grupos y Rangos===
| ''(''...'')'' | Captura un conjunto |
| ''(?:''...'')'' | __No__ captura un conjunto |
| ''|'' | Captura la expresión antes o después del caño ''|'' |
=== Escapar expresión Regular===
| ''\'' | anula el significado ("escapa") un caracter o metacaracter RegEx. |
====Ejemplos ====
===Ejemplos de búsquedas con RegEx de Caracteres===
|''\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. |
===Ejemplos de Búsquedas con RegEx de cadenas===
| ''.'' | 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 |