Compartir a través de


Escapes de carácter

La barra diagonal inversa (\) en una expresión regular indica una de las siguientes opciones:

  • El carácter que lo sigue es un carácter especial, como se muestra en la tabla de la siguiente sección. Por ejemplo, \b es un delimitador que indica que una coincidencia de expresión regular debería comenzar en un límite de palabras, \t representa una pestaña y \x020 representa un espacio.

  • Un carácter, que de lo contrario se interpretaría como una construcción de lenguaje sin escape, se debería interpretar literalmente. Por ejemplo, una llave ({) inicia la definición de un cuantificador, pero una barra diagonal inversa seguida por una llave (\{) indica que el motor de expresión regular debería coincidir con la llave. De igual forma, una barra diagonal inversa única marca el principio de una construcción de lenguaje de escape, pero dos barras diagonales inversas (\\) indican que el motor de expresiones regulares debería coincidir con la barra diagonal inversa.

NotaNota

Escapes de carácter que se reconocen en modelos de expresiones regulares pero no en modelos de reemplazo.

Escapes de caracteres de .NET Framework

En la tabla siguiente se enumeran los escapes de carácter admitidos en expresiones regulares de .NET Framework.

Carácter o secuencia

Descripción

Todos los caracteres excepto para lo siguiente:

. $ ^ { [ ( | ) * + ? \

Estos caracteres no tienen ningún significado especial en expresiones regulares y equivalen a sí mismos.

\a

Coincide con un carácter de campana (alarma), \u0007.

\b

En una clase de caracteres [character_group], coincide con un retroceso, \u0008. (Vea Clases de carácter). Fuera de una clase de caracteres, \b es un delimitador que coincide con un límite de palabras. (Vea Delimitadores en expresiones regulares).

\t

Coincide con una tabulación, \u0009.

\r

Coincide con un retorno de carro, \u000D. Observe que \r no es equivalente al carácter de nueva línea, \n.

\v

Coincide con una tabulación vertical, \u000B.

\f

Coincide con un avance de página, \u000C.

\n

Coincide con una nueva línea, \u000A.

\e

Coincide con un escape, \u001B.

\nnn

Coincide con un Carácter ASCII, donde nnn está compuesto de hasta tres dígitos que representan el código de carácter octal. Por ejemplo, \040 representa un carácter de espacio. Sin embargo, esta construcción se interpreta como una referencia inversa si tiene un solo dígito (por ejemplo, \2) o si se corresponde con el número de un grupo capturador. (Vea Construcciones de referencia inversa).

\xnn

Coincide con un Carácter ASCII, donde nn es un código del carácter hexadecimal de dos dígitos.

\cX

Coincide con un carácter de control ANSI, donde X es la letra del carácter de control. Por ejemplo, \cC es CTRL-C.

\unnnn

Coincide con un carácter Unicode, donde nnnn es un punto de código hexadecimal de cuatro dígitos.

NotaNota
.NET Framework no admite el escape de caracteres de Perl 5 utilizado para especificar Unicode.Este escape de caracteres de Perl 5 tiene el formato \x{####…}, donde ####… es una serie de dígitos hexadecimales.En su lugar, use \unnnn.

\

Si va seguido de un carácter que no se reconoce como un carácter de escape coincide con ese carácter. Por ejemplo, \* coincide con un asterisco (*) y es igual que \x2A.

Un ejemplo

En el ejemplo siguiente se muestra el uso de escapes de carácter en una expresión regular. Analiza una cadena que contiene los nombres de las ciudades más grandes del mundo y sus poblaciones en 2009. Cada nombre de ciudad se separa de su población por una pestaña (\t) o una barra vertical (| o \u007c). Las ciudades individuales y sus poblaciones están separadas entre sí por un retorno de carro y avance de línea.

Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim delimited As String = "\G(.+)[\t\u007c](.+)\r?\n"
      Dim input As String = "Mumbai, India|13,922,125" + vbCrLf + _
                            "Shanghai, China" + vbTab + "13,831,900" + vbCrLf + _
                            "Karachi, Pakistan|12,991,000" + vbCrLf + _
                            "Dehli, India" + vbTab + "12,259,230" + vbCrLf + _
                            "Istanbul, Turkey|11,372,613" + vbCrLf
      Console.WriteLine("Population of the World's Largest Cities, 2009")
      Console.WriteLine()
      Console.WriteLine("{0,-20} {1,10}", "City", "Population")
      Console.WriteLine()
      For Each match As Match In Regex.Matches(input, delimited)
         Console.WriteLine("{0,-20} {1,10}", match.Groups(1).Value, _
                                            match.Groups(2).Value)
      Next                         
   End Sub
End Module
' The example displays the following output:
'       Population of the World's Largest Cities, 2009
'       
'       City                 Population
'       
'       Mumbai, India        13,922,125
'       Shanghai, China      13,831,900
'       Karachi, Pakistan    12,991,000
'       Dehli, India         12,259,230
'       Istanbul, Turkey     11,372,613
using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string delimited = @"\G(.+)[\t\u007c](.+)\r?\n";
      string input = "Mumbai, India|13,922,125\t\n" + 
                            "Shanghai, China\t13,831,900\n" + 
                            "Karachi, Pakistan|12,991,000\n" + 
                            "Dehli, India\t12,259,230\n" + 
                            "Istanbul, Turkey|11,372,613\n";
      Console.WriteLine("Population of the World's Largest Cities, 2009");
      Console.WriteLine();
      Console.WriteLine("{0,-20} {1,10}", "City", "Population");
      Console.WriteLine();
      foreach (Match match in Regex.Matches(input, delimited))
         Console.WriteLine("{0,-20} {1,10}", match.Groups[1].Value, 
                                            match.Groups[2].Value);
   }
}
// The example displyas the following output:
//       Population of the World's Largest Cities, 2009
//       
//       City                 Population
//       
//       Mumbai, India        13,922,125
//       Shanghai, China      13,831,900
//       Karachi, Pakistan    12,991,000
//       Dehli, India         12,259,230
//       Istanbul, Turkey     11,372,613

La expresión regular \G(.+)[\t|\u007c](.+)\r?\n se interpreta como se muestra en la tabla siguiente.

Modelo

Descripción

\G

Comience la coincidencia donde finalizó la última coincidencia.

(.+)

Buscar una coincidencia con cualquier carácter una o más veces. Éste es el primer grupo de captura.

[\t\u007c]

Buscar una coincidencia con una pestaña (\t) o una barra vertical (|).

(.+)

Buscar una coincidencia con cualquier carácter una o más veces. Éste es el segundo grupo de captura.

\r? \n

Buscar una coincidencia con cero o una aparición de un retorno de carro seguida por una nueva línea.

Vea también

Conceptos

Elementos del lenguaje de expresiones regulares

Historial de cambios

Fecha

Historial

Motivo

Mayo de 2010

Se corrigió el modelo de expresión regular.

Comentarios de los clientes.