LazowskiAnton · Extensions

RegexSmith

Expresiones regulares explicadas y probadas justo donde se escriben. Pase el puntero sobre un patrón en C# y verá una línea por cada pieza en palabras sencillas, sus grupos en color y cadenas que coinciden; los patrones que pueden bloquearse aparecen subrayados; pruebe sus propios ejemplos en el Probador de RegexSmith y escriba el patrón de vuelta con un clic.

Gratis · Visual Studio 2022 y 2026 · 14 idiomas de interfaz · sin telemetría

Por qué RegexSmith

Una tarjeta emergente sobre un patrón [GeneratedRegex]: el patrón con sus grupos en color, una línea por pieza en palabras sencillas, ejemplos que coinciden y uno que no, y el estado ✓ seguro

Palabras sencillas, no una lección de sintaxis

^(?<year>\d{4})-(?<id>\d{1,5})$ se convierte en «Inicio del texto», «Exactamente 4 dígitos», «De 1 a 5 dígitos»: una línea por pieza, anidada bajo su grupo, cada grupo en su propio color.

Comprobado por el motor real

Los ejemplos de la tarjeta y cada resultado del probador salen del propio motor de expresiones regulares de .NET, con las opciones de la llamada. Lo que ve es lo que hará su aplicación.

Patrones que pueden bloquearse

([a-z0-9]+\.?)+ parece inofensivo y puede congelar una solicitud con una cadena larga que casi coincide. RegexSmith subraya esas repeticiones y las corrige con Ctrl+.

Gratis, sin letra pequeña

Sin suscripción, sin versión «pro», sin recopilación de datos, sin mensajes en la ventana Salida ni al iniciar. Los patrones y los ejemplos se quedan en su equipo. Lo único que le pediremos —cuando ya la haya usado durante un tiempo— es una valoración en el Marketplace. Funciona en Visual Studio 2022 y 2026, x64 y ARM64.

Características

La tarjeta emergente

Pase el puntero sobre la cadena de un patrón y la información sobre herramientas habitual de Visual Studio incluye una tarjeta de RegexSmith: qué significa el patrón, con qué coincide y si es seguro.

La tarjeta emergente: el encabezado con el tipo y las opciones, el patrón con sus grupos en color, una línea por pieza anidada bajo los grupos, los ejemplos y el botón Probar patrón

Dónde funciona

En archivos C#, sobre el patrón de:

Las cadenas normales, textuales (@"…") y sin formato ("""…""") se leen como las lee el compilador, así que "\\d" y @"\d" son el mismo patrón.

Qué muestra la tarjeta

En pantallaSignificado
RegexSmith · Expresión regular de .NET · IgnoreCaseEl tipo de patrón y las opciones leídas de la llamada, y el estado a la derecha.
El patrónLos paréntesis de cada grupo de captura en su color, y su contenido subrayado con ese color; el texto conserva el color del tema, así que sigue siendo legible.
Exactamente 4 dígitosUna línea por pieza en palabras sencillas —«Inicio del texto», «Uno de los textos: “jpg”, “png”», «De 1 a 5 dígitos»—, anidada bajo su grupo. Un patrón muy largo termina con … N más.
Etiquetas de grupoEl nombre o número de cada grupo en una etiqueta de su color: los mismos colores que en el patrón y bajo el código.
✓ Coincide: … ✗ No coincide: …Dos cadenas que coinciden y una que no, generadas a partir del patrón y comprobadas por el motor real de .NET. Los espacios se muestran como puntos tenues.
▶ Probar patrón…Abre el patrón en el Probador de RegexSmith.

El estado

En pantallaSignificado
✓ seguro.NET acepta el patrón y nada en él puede provocar un retroceso (backtracking) catastrófico.
⚠ puede bloquearseUna repetición puede tardar un tiempo exponencial con una entrada larga que casi coincide; la tarjeta indica de qué tipo es (RX001) y que Ctrl+. ofrece correcciones.
✕ no válidoEl motor rechaza el patrón; la tarjeta muestra su mensaje: .NET no acepta este patrón: …

«Seguro» significa solo eso: .NET acepta el patrón y no puede bloquearse. No significa que coincida con lo que usted pretende; para eso están los ejemplos y el probador.

Subrayado de grupos

Cada grupo de captura de un patrón recibe una línea fina de su color directamente en el código, del mismo color que en la tarjeta. Un patrón largo con cinco grupos se lee de un vistazo: qué parte es el año y cuál el id.

Un grupo dentro de otro queda un poco más abajo, para que ambas líneas sigan visibles. Los colores van en orden: salmón, verde, azul, violeta, ámbar, turquesa, y vuelta a empezar.

El subrayado se puede desactivar en la configuración: Subrayar grupos de captura.

Patrones que pueden bloquearse

Algunos patrones tardan un tiempo exponencial con una cadena larga que casi coincide: la forma clásica en que una expresión regular congela una solicitud web. RegexSmith los detecta por su forma y coloca una línea ondulada de advertencia bajo la repetición; pase el puntero sobre ella para ver el motivo.

Una línea ondulada RX001 bajo ([a-z0-9]+\.?)+ con el menú Ctrl+. abierto y una vista previa de la corrección: el patrón antiguo tachado y el nuevo con un grupo atómico

Qué se subraya (RX001)

No dentro de grupos atómicos ni de aserciones de búsqueda (lookaround), y nunca con RegexOptions.NonBacktracking: ahí no puede ocurrir.

Correcciones en Ctrl+.

Coloque el cursor sobre la línea ondulada y pulse Ctrl+.: cada corrección muestra una vista previa, con el patrón antes (tachado) y después.

CorrecciónQué hace
Hacer atómica la repetición interna: (?>…)Envuelve la repetición interna en (?>…). Coinciden las mismas cadenas; la repetición ya no puede dividirse de muchas formas.
Usar RegexOptions.NonBacktracking (.NET 7+)Añade la opción a la llamada. Tiempo lineal con cualquier entrada; requiere .NET 7 o posterior. Solo se ofrece cuando el patrón lo permite: sin referencias inversas, aserciones de búsqueda, grupos atómicos o de equilibrio, ni condicionales.
Probar este patrón en RegexSmithAbre el patrón en el probador; se ofrece sobre cualquier patrón, no solo sobre uno arriesgado.

RX001 se puede desactivar en la configuración (Sugerencias en el editor) o con No mostrar este tipo de sugerencia en su información sobre herramientas; las correcciones de Ctrl+. se mantienen.

El probador

El Probador de RegexSmith se abre acoplado junto a Resultados de la búsqueda. El patrón viene del código y sigue vinculado a él: pruébelo con sus propios ejemplos, modifíquelo y escríbalo de vuelta.

El Probador de RegexSmith: el vínculo al origen, el patrón, la línea de estado, los botones de opciones, ejemplos con expectativas y grupos resaltados, una fila incorrecta en rojo, la tabla de grupos y los botones

Cómo abrirlo

El patrón y sus opciones

Arriba, el archivo y la línea del patrón: haga clic para ir allí. Debajo, el cuadro del patrón, la línea de estado (✓ seguro, ⚠ puede bloquearse o el error del motor, y luego N de M según lo esperado · ms) y los botones de opciones: IgnoreCase, Multiline, Singleline, IgnorePatternWhitespace, ExplicitCapture, RightToLeft, CultureInvariant. Cada cambio se vuelve a ejecutar al instante.

Ejemplos y expectativas

La primera vez aparecen los ejemplos de la tarjeta: dos que deben coincidir y uno que no. Escriba uno nuevo en Agregue un ejemplo y presione Entrar…; haga clic en un ejemplo para editarlo y ✕ lo elimina. La marca delante de cada ejemplo indica qué debe hacer; haga clic en ella para cambiarla:

En pantallaSignificado
✓debe coincidir
✗no debe coincidir
–sin expectativa, solo mostrar

Un ejemplo que hace lo contrario se vuelve rojo —✗ coincide o ✗ no coincide—, así que los ejemplos se convierten en una pequeña especificación del patrón. Las coincidencias aparecen sombreadas, los grupos subrayados con sus colores y los espacios como puntos. Una ejecución que tarda más de 1 segundo se detiene con ⏱ demasiado lento.

Grupos del ejemplo seleccionado enumera cada coincidencia del ejemplo seleccionado: la coincidencia completa y luego cada grupo con su valor y su posición (no capturado cuando no participó).

Reemplazar

La pestaña Reemplazar añade un cuadro de reemplazo —$1, ${name}, $$ para un $— y muestra el resultado de cada ejemplo, tal como lo haría Regex.Replace.

Copiar, revertir, aplicar

Copiar como prueba unitaria pone en el portapapeles una prueba con sus ejemplos, para xUnit, NUnit o MSTest: la especificación pasa al proyecto de pruebas.

Revertir vuelve al patrón y las opciones del código; los ejemplos se conservan.

Aplicar al código escribe el patrón de vuelta como el mismo tipo de literal que era (normal, textual o sin formato), junto con las opciones; una sola acción de Deshacer lo revierte. Si ese código cambió después de que el probador lo abriera, no se escribe nada: vuelva a abrir el probador desde el patrón.

Los ejemplos se recuerdan por patrón y por solución en %LocalAppData%\RegexSmith\samples, así que la próxima vez ya estarán ahí. Nada va al repositorio.

Configuración

Herramientas › Opciones › SmithWorks › RegexSmith. Cada opción tiene una breve descripción de lo que hace.

OpciónPredeterminado
Explicar patrones al mantener el punteroactivado
Subrayar grupos de capturaactivado
RX001 Retroceso catastróficoactivado
Pedir una valoración en el Marketplaceactivado

Abajo: Restablecer valores predeterminados, Documentación, Valorar en Marketplace y Enviar comentarios.

La configuración se guarda en %LocalAppData%\RegexSmith.

La página de opciones de RegexSmith
La página de opciones.

Preguntas frecuentes

¿RegexSmith envía algún dato?

No. Los patrones se leen del documento abierto y se ejecutan en su equipo; los ejemplos se guardan en %LocalAppData%\RegexSmith. Sin solicitudes de red, sin telemetría.

La tarjeta dice «✓ seguro». ¿Es correcto el patrón?

No necesariamente. «Seguro» significa que .NET acepta el patrón y que ninguna repetición en él puede provocar un retroceso catastrófico. Si coincide con lo que usted pretende lo muestran los ejemplos: márquelos con ✓ o ✗ en el probador.

¿Por qué no aparece la tarjeta sobre mi patrón?

La tarjeta aparece sobre un literal de cadena que RegexSmith sabe que es un patrón: el argumento de new Regex, de un método estático de Regex, de [GeneratedRegex] o de [RegularExpression], o una constante del mismo archivo usada ahí. Un patrón construido en tiempo de ejecución (concatenado, leído de la configuración) no se puede leer. Compruebe también Explicar patrones al mantener el puntero en la configuración.

¿Qué motor de expresiones regulares se usa?

El motor de expresiones regulares de .NET sobre el que se ejecuta el propio Visual Studio, con las opciones de la llamada. RegexOptions.NonBacktracking (.NET 7+) también se lee de la llamada; los ejemplos se ejecutan entonces en el motor habitual, y coinciden las mismas cadenas en ambos casos.

Aplicar al código no hizo nada.

El código del patrón cambió después de que el probador lo abriera, así que RegexSmith no escribe en un lugar que quizá ya no contenga el patrón; el probador lo indica bajo los botones. Vuelva a abrir el probador desde el patrón. Donde el código no tiene sitio para opciones ([RegularExpression] no admite ninguna), se escribe el patrón y las opciones no.

¿Funciona en VB.NET, JavaScript o TypeScript?

No en la 1.0: solo C#. Otros lenguajes usan otros motores; pídalo en el repositorio Feedback si necesita alguno.

¿Dónde informo de un problema o propongo una característica?

Abra una incidencia en el repositorio Feedback de GitHub: hay formularios para errores e ideas (cambie los nombres privados). También puede usar la pestaña Q&A en Marketplace.

Historial de cambios

1.0.1

1.0.0