Un metacarácter es un carácter que tiene un significado especial para un programa de computadora, como un intérprete de shell o un motor de expresiones regulares (regex).
En las expresiones regulares extendidas POSIX, hay 14 metacaracteres que deben escaparse (precedidos por una barra invertida ( \)) para eliminar su significado especial y ser tratados literalmente dentro de una expresión: corchetes de apertura y cierre ( [y ]); barra invertida ( \); signo de intercalación ( ^); signo de dólar ( $); punto/punto final/punto ( .); símbolo de barra vertical/tubería ( |); signo de interrogación ( ?); asterisco ( *); signos más y menos ( +y -); llaves de apertura y cierre ( {y }); y paréntesis de apertura y cierre ( (y )).
Por ejemplo, para hacer coincidir la expresión aritmética (1+1)*3=6con una expresión regular, la expresión regular correcta es \(1\+1\)\*3=6; de lo contrario, los paréntesis, el signo más y el asterisco tendrán significados especiales.
Otros ejemplos
Algunos otros personajes pueden tener un significado especial en algunos entornos.
- En algunos shells de Unix, el punto y coma (";") es un separador de declaraciones .
- En XML y HTML , el ampersand ("&") introduce una entidad HTML . [1] También tiene un significado especial en MS-DOS / Símbolo del sistema de Windows . [2]
- En algunos shells de Unix y en el símbolo del sistema de MS-DOS/Windows, el signo menor que y el signo mayor que ( "<" y ">") se utilizan para redirigir y el acento grave ("`") se utiliza para sustituir comandos . [2]
- En muchos lenguajes de programación , las cadenas se delimitan mediante comillas ("o '). En algunos casos, se utilizan caracteres de escape (y otros métodos) para evitar colisiones de delimitadores , por ejemplo, "Dijo, \"Hola\"".
- En las cadenas de formato printf , el signo de porcentaje ("%") se utiliza para introducir especificadores de formato y debe escaparse como "%%" para que se interprete literalmente. [3] En SQL , el porcentaje se utiliza como un carácter comodín . [4]
- En SQL, el guión bajo ("_") se utiliza para coincidir con cualquier carácter individual. [4]
Escapando
El término "escapar un metacarácter" significa hacer que el metacarácter sea ineficaz (despojarlo de su significado especial), haciendo que tenga su significado literal. Por ejemplo, en PCRE , un punto (".") representa cualquier carácter individual. La expresión regular "AC" coincidirá con "ABC", "A3C" o incluso "A C". Sin embargo, si se escapa el ".", perderá su significado como metacarácter y se interpretará literalmente como ".", lo que hará que la expresión regular "A\.C" solo coincida con la cadena "AC".
La forma habitual de escapar un carácter en una expresión regular y en otros lugares es anteponiéndole una barra invertida ("\"). Otros entornos pueden emplear métodos diferentes, como el Símbolo del sistema de MS-DOS/Windows, donde se utiliza un signo de intercalación ("^") en su lugar. [2]
Véase también
Referencias
- ^ "Referencias de entidades de caracteres en HTML 4". www.w3.org . W3C . 24 de diciembre de 1999 . Consultado el 19 de noviembre de 2018 .
- ^ abc "Descripción general del shell de comandos". docs.microsoft.com . Microsoft . 10 de septiembre de 2009 . Consultado el 19 de noviembre de 2018 .
- ^ "Especificaciones básicas de The Open Group, número 7: fprintf". pubs.opengroup.org . The Open Group . 2018 . Consultado el 19 de noviembre de 2018 .
- ^ ab "LIKE (Transact-SQL)". docs.microsoft.com . Microsoft . 14 de marzo de 2017 . Consultado el 19 de noviembre de 2018 .