Usar expresiones regulares en Visual Studio

Visual Studio utiliza expresiones regulares de .NET Framework para buscar y reemplazar texto.En Visual Studio 2010 y versiones anteriores, Visual Studio utiliza sintaxis personalizada de la expresión regular en las ventanas Buscar y reemplazar.En este tema se explica cómo convertir algunos de los símbolos personalizados más utilizadas de expresión regular a versiones de .NET.

SugerenciaSugerencia

En sistemas operativos Windows, la mayoría de las líneas terminan en “\r\n” (un retorno de carro seguido de una nueva línea).Estos caracteres no están visibles, pero están presentes en el editor y se pasan al servicio de expresiones regulares de .NET.

Para obtener más información, vea Expresiones regulares de .NET Framework.

SugerenciaSugerencia

Para obtener información sobre expresiones regulares que se utilizan en patrones de reemplazo, vea Sustituciones en expresiones regulares.Para utilizar un grupo numerado catch, la sintaxis es $1 para especificar el grupo numerado y (x) para especificar el grupo en cuestión.Por ejemplo, la expresión regular agrupada (\d)([a-z]) encuentra cuatro coincidencias en la siguiente cadena: 1a 2b 3c 4d.La cadena de reemplazo z$1 que convierte esa cadena en z1 z2 z3 z4>; la sintaxis equivalente en Visual Studio 2010 es {:z}([a-z]) para la expresión regular agrupada y z\1 para la cadena de reemplazo.

Comparación de expresiones regulares de .NET Framework

Puede convertir las expresiones regulares de la versión utilizada en versiones anteriores de Visual Studio en las expresiones regulares de .NET Framework mediante la siguiente tabla.

Objetivo

Nuevo

Antiguo

Nuevo ejemplo

Equivale a cualquier carácter único (excepto a un salto de línea)

.

.

a.o detecta "aro" en "caro" y "abo" en "cabo", pero no encuentra ninguna coincidencia en "alto".

Detectar cero o más instancias de la expresión precedente (quedarse con la mayor cantidad posible de caracteres)

*

*

a*r coincide con "r" en "rack", "ar" en "ark" y "aar" en "aardvark"

Buscar cualquier carácter cero o más veces (carácter comodín *)

.*

.*

c.*e coincide con “cke” en “racket”, “comme” en “comment” y “code” en “code”

Detectar una o más instancias de la expresión precedente (quedarse con la mayor cantidad posible de caracteres)

+

+

e. +e coincide con "eede" en "feeder" pero no "ee".

Buscar cualquier carácter una o más veces (carácter comodín ?)

.+

.+

e.+e coincide con “eede” en “feeder” pero no “ee”.

Detectar cero o más instancias de la expresión precedente (quedarse con la menor cantidad posible de caracteres)

*?

@

e.*?e coincide con "ee" en "feeder" pero no "eede".

Detectar una o más instancias de la expresión precedente (quedarse con la menor cantidad posible de caracteres)

+?

#

e.+?e detecta "ente" y "erprise" en "enterprise", pero no la palabra "enterprise" completa.

Delimitar la cadena coincidente al comienzo de una línea o cadena

^

^

^car coincide con la palabra "car" cuando aparece al principio de una línea.

Delimitar la cadena coincidente al final de una línea

\r?$

$

Fin\r?$ coincide con “fin” solo cuando aparece al final de una línea.

Hacer coincidir cualquier carácter único en un conjunto

[abc]

[abc]

b[abc] coincide con "ba", "bb" y "bc".

Buscar cualquier carácter en un intervalo de caracteres

[a-f]

[x-y]

be[n-t] detecta "bet" en "beta", "ben" en "beneficio" y "bes" en "beso", pero no detecta "beligerante".

Captura y numera de forma implícita la expresión incluida entre paréntesis

()

()

([a-z])X\1 coincide con “aXa " y “bXb”, pero no “aXb”. ". “\1 " hace referencia al primer grupo de expresiones “[a-z]”.

Invalidar una coincidencia

(?!abc)

~(abc)

real~(?!idad) detecta "real" en "realeza" y en "realmente" pero no lo detecta en "realidad". También encuentra el segundo “real” (pero no el primer “real”) en “realityreal”.

Coincide con cualquier carácter que no se encuentre en un determinado conjunto de caracteres

[^abc]

[^abc]

be[^n-t] detecta "bea" en "beato", "bel" en "beligerante" y "bec" en "abecedario", pero no detecta "beneficio".

Detecta la expresión situada antes o después del símbolo.

|

|

(esponja|gel) de baño detecta "esponja de baño" y "gel de baño".

Escape, el carácter que sigue a la barra diagonal inversa

\

\

\^ coincide con el carácter ^.

Especifique el número de apariciones de carácter anterior o grupo

{x}, donde x es el número de apariciones

\x, donde x es el número de apariciones

x(ab){2}x coincide con "xababx" y x(ab){2,3}x coincide con "xababx" y "xabababx", pero no con "xababababx".

Texto de coincidencia en una clase de caracteres Unicode, donde “X” es el número de Unicode.Para obtener más información acerca de las clases de carácter Unicode, vea

Propiedades de caracteres del estándar Unicode 5.2.

\p{X}

:X

\p{Lu} coincide con "T" y "D" en "Thomas Doe".

Hacer coincidir con un límite de palabras

\b (fuera de una clase de carácter \b especifica un límite de palabras y, dentro de una clase de carácter, especifica un retroceso).

< y > especifican el principio y el final de una palabra

\bin coincide con "en" en "interior"pero no en "pinto".

Buscar un salto de línea coincidente (por ejemplo, un retorno de carro seguido de una nueva línea).

\r?\n

\n

Fin\r?\nComienzo detecta"Comienzo" y "Fin" solamente cuando "Fin" es la última cadena de una línea y "Comienzo" es la primera cadena de la línea siguiente.

Buscar coincidencias de cualquier carácter alfanumérico

\w

:a

a\wd coincide con "add" y "a1d" pero no con "a d".

Hacer coincidir con cualquier carácter que sea un espacio en blanco.

(?([^\r\n])\s)

:b

Public\sInterface detecta la frase "Interfaz pública".

Busca coincidencias con cualquier carácter numérico

\d

:d

\d coincide con "3" en "3456", "2" en 23" y "1" en "1".

Buscar coincidencias con un carácter Unicode

\uXXXX donde XXXX especifica el valor de carácter Unicode.

\uXXXX donde XXXX especifica el valor de carácter Unicode

\u0065 detecta el carácter "e".

Coincide con un identificador

\b(_\w+|[\w-[0-9_]]\w*)\b

:i

Coincide con "type1" pero no &type1" o "#define".

Buscar una cadena entre comillas

((\".+?\")|('.+?'))

:q

Coincide con cualquier carácter comillas simples o dobles del interior de la cadena.

Coincide con un número hexadecimal

\b0[xX]([0-9a-fA-F])\b

:h

Coincide con “0xc67f” pero no “0xc67fc67f”.

Coincidir con enteros y decimales

\b[0-9]*\.*[0-9]+\b

:n

Coincide con "1,333".

Vea también

Otros recursos

Buscar y reemplazar texto