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](../../regexsmith/marketplace/hero.png)
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 sobre un patrón en C#: el patrón con sus grupos en color, una línea por pieza en palabras sencillas, etiquetas de grupo en color y un estado: ✓ seguro, ⚠ puede bloquearse o ✕ no válido.
- Subrayado de grupos: una línea fina del color del grupo bajo cada grupo de captura, directamente en el código; los grupos anidados quedan más abajo.
- Ejemplos generados a partir del patrón —dos cadenas que coinciden y una que no—, comprobados por el motor real de .NET.
- RX001: una línea ondulada bajo las repeticiones que pueden tardar un tiempo exponencial, con correcciones en Ctrl+. y una vista previa de antes y después.
- El Probador de RegexSmith, acoplado junto a Resultados de la búsqueda: sus ejemplos con expectativas ✓/✗, coincidencias y grupos resaltados, una tabla de grupos y una pestaña Reemplazar.
- Aplicar al código: el patrón editado vuelve al mismo tipo de literal de cadena, con sus opciones, como una sola acción de Deshacer.
- Copiar como prueba unitaria para xUnit, NUnit o MSTest: sus ejemplos se convierten en casos de prueba.
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.

Dónde funciona
En archivos C#, sobre el patrón de:
new Regex("…"), con o sinRegexOptions;- los métodos estáticos
Regex.IsMatch,Match,Matches,Replace,SplityCount; [GeneratedRegex("…")];[RegularExpression("…")]: la tarjeta indica entonces Validación: debe coincidir todo el valor;- una
const stringdel mismo archivo que use alguno de ellos.
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 pantalla | Significado |
|---|---|
| RegexSmith · Expresión regular de .NET · IgnoreCase | El tipo de patrón y las opciones leídas de la llamada, y el estado a la derecha. |
| El patrón | Los 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ígitos | Una 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 grupo | El 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 pantalla | Significado |
|---|---|
| ✓ seguro | .NET acepta el patrón y nada en él puede provocar un retroceso (backtracking) catastrófico. |
| ⚠ puede bloquearse | Una 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álido | El 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](../../regexsmith/marketplace/backtracking.png)
Qué se subraya (RX001)
- Repetición anidada:
(a+)+,([a-z0-9]+\.?)+: una misma secuencia de caracteres puede repartirse entre la repetición interna y la externa de muchísimas maneras. - Repetición de alternativas que coinciden con los mismos caracteres:
(\w|\d)+: cualquiera de las dos ramas puede tomar un dígito, así que cada dígito duplica el trabajo.
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ón | Qué 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 RegexSmith | Abre 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.

Cómo abrirlo
- ▶ Probar patrón… en la tarjeta emergente;
- Ctrl+. sobre un patrón › Probar este patrón en RegexSmith;
- clic derecho en un archivo C# › Probar patrón de expresión regular;
- Ver › Otras ventanas › Probador de RegexSmith: sin vínculo con el código, un lugar para probar un patrón.
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 pantalla | Significado |
|---|---|
| ✓ | 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ón | Predeterminado |
|---|---|
| Explicar patrones al mantener el puntero | activado |
| Subrayar grupos de captura | activado |
| RX001 Retroceso catastrófico | activado |
| Pedir una valoración en el Marketplace | activado |
Abajo: Restablecer valores predeterminados, Documentación, Valorar en Marketplace y Enviar comentarios.
La configuración se guarda en %LocalAppData%\RegexSmith.

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
- Las sugerencias en el editor tienen su propia lista en la página de opciones, y un vínculo en la información sobre herramientas desactiva un tipo de sugerencia justo donde lo ve.
1.0.0
- Primera versión: la tarjeta emergente con un desglose en palabras sencillas, grupos en color, ejemplos comprobados por el motor de .NET y un estado; el subrayado de grupos en el código; RX001 para patrones que pueden bloquearse, con correcciones de grupo atómico y NonBacktracking en Ctrl+.; el Probador de RegexSmith con expectativas, grupos, Reemplazar, Copiar como prueba unitaria y Aplicar al código; una petición única de valoración.