Generar una regex
Describa lo que quiere encontrar, por ejemplo un teléfono escrito en tres formatos o una línea de registro con marca de tiempo y nivel de gravedad, y reciba la expresión regular junto con las cadenas con las que se comprobó. Paga por uso, sin suscripción.
Ejecútela online
Ejecute esto en nuestros servidores con su cuenta. Las herramientas gratuitas corren en su navegador; esta cobra de su saldo del KIT según el precio de arriba.
Escribir una expresión regular desde cero suele implicar tres pestañas abiertas, una sintaxis de lookahead medio recordada y un caso de prueba que falla en silencio después de publicar.
Por qué cuesta tanto escribir una expresión regular
Las expresiones regulares nacen de la teoría de lenguajes formales de la década de 1950 y llegaron a los programadores con el trabajo de Ken Thompson en los editores de texto QED y ed, en los años sesenta, mucho antes de que Perl popularizara el estilo denso y lleno de símbolos que hoy se reconoce. Esa larga historia explica que la sintaxis cambie de un lenguaje a otro: el lookbehind, las propiedades Unicode y los grupos con nombre llegaron a cada motor en momentos distintos. Incluso quien las domina acaba revisando los casos límite antes de confiar en un patrón.
Describa la regla y compruebe los ejemplos
Escriba la regla como se la explicaría a un compañero: un teléfono en tres formatos, una línea de registro con marca de tiempo, nivel de gravedad y mensaje, o códigos de producto con un formato conocido pero irregular. Ayuda añadir un par de cadenas que deban coincidir y otro par que no. El resultado trae el patrón y las cadenas de prueba con las que se verificó, de modo que usted lo ve funcionar antes de llevarlo a un formulario, a un analizador de registros o a un guion de buscar y reemplazar.
Una sintaxis más vieja que la mayoría de los lenguajes que la usan
Las expresiones regulares se remontan a la teoría de lenguajes formales de los años cincuenta y llegaron a los programadores a través del trabajo de Ken Thompson en los editores de texto QED y ed en los años sesenta, décadas antes de que Perl popularizara el estilo denso y cargado de símbolos que hoy reconoce la mayoría de los desarrolladores.
Esa larga historia explica por qué la sintaxis se siente inconsistente entre lenguajes y motores: el soporte de lookbehind, los escapes de propiedad Unicode y los grupos con nombre llegaron en momentos distintos a implementaciones distintas, y es parte de por qué incluso quienes dominan regex terminan revisando casos límite en un probador antes de confiar en un patrón en producción.
Qué puede hacer con ella
Validación de campos de formulario
Un constructor de formularios genera un patrón de validación para un campo de teléfono a partir de una descripción simple de los formatos aceptados, con ejemplos que pasan y que fallan.
Análisis de líneas de log
Un flujo de ingesta de logs genera un patrón para extraer marca de tiempo, severidad y mensaje de un formato de log personalizado, sin que un desarrollador escriba la expresión a mano.
Extracción de datos de texto semiestructurado
Una herramienta de scraping genera un patrón para extraer códigos SKU de productos en un formato conocido pero inconsistente dentro del texto de páginas capturadas.
Preguntas frecuentes
¿Entrega ejemplos de prueba junto con el patrón?
Sí, el resultado incluye cadenas de ejemplo que el patrón hace coincidir y cadenas que rechaza correctamente, para que usted pueda verificarlo antes de usarlo.
¿Con qué variante de regex trabaja?
Puede especificar el motor o lenguaje de destino en su solicitud; describa su caso de uso y cualquier restricción de variante para que el patrón generado sea compatible con donde lo va a ejecutar.
¿Puede generar varios patrones en una sola solicitud?
Sí, envíe varios ítems en una sola tarea y cada uno se cobra individualmente a la tarifa por ítem, lo cual sirve para construir de una vez un conjunto completo de validadores.
¿El regex generado siempre será el más eficiente?
Está construido para coincidir correctamente con su descripción y pasar los casos de prueba entregados; para patrones muy sensibles al rendimiento, revíselo contra el volumen específico de sus datos.
¿Se guarda mi descripción o el patrón generado?
No, las descripciones enviadas y los patrones generados se eliminan después del período de retención y nunca se usan para entrenamiento.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/dev/regex-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"El informe trimestral cerró con 1,2 M€ de ingresos."}'const res = await fetch("https://api.kit.forhosting.com/dev/regex-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "El informe trimestral cerró con 1,2 M€ de ingresos."
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/regex-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "El informe trimestral cerró con 1,2 M€ de ingresos."
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/regex-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"El informe trimestral cerró con 1,2 M€ de ingresos."}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"El informe trimestral cerró con 1,2 M€ de ingresos."}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/regex-generate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"text": "El informe trimestral cerró con 1,2 M€ de ingresos."
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.regex_generate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
422 | task_failed | La tarea falló tras 3 reintentos. No se cobra. |
Notas técnicas
Este endpoint toma una descripción de lo que usted quiere hacer coincidir y devuelve una expresión funcional junto con ejemplos de cadenas que coinciden y que no.
La distancia entre conocer la regla y escribir la sintaxis
La mayoría de los desarrolladores puede describir exactamente qué necesita hacer coincidir (un número de teléfono en tres formatos, un slug con números finales opcionales, una línea de log con marca de tiempo y nivel de severidad) mucho antes de recordar si su motor necesita un grupo sin captura o cómo escapar un punto literal dentro de una clase de caracteres. Esa distancia entre la regla en la cabeza y la sintaxis en la pantalla es donde las expresiones regulares se ganan su fama, y es exactamente la distancia que dev.regex_generate elimina.
De la descripción a un patrón probado
Envíe POST a /dev/regex-generate con una descripción en lenguaje simple del patrón que necesita, idealmente junto con un par de cadenas de ejemplo que deberían coincidir y otras que no, y la llamada devuelve un task_id mientras la expresión se construye y verifica en segundo plano. El resultado, entregado por webhook firmado o mediante un enlace firmado válido por 24 horas, incluye el patrón generado junto con las cadenas de prueba contra las que se verificó, así usted no tiene que confiar en una expresión que nunca vio ejecutarse.
Dónde ahorra más tiempo
La validación de formularios, el análisis de logs, la extracción de datos de texto semiestructurado y los scripts de buscar y reemplazar dependen de expresiones regulares, y son exactamente los lugares donde un patrón sutilmente equivocado provoca fallas silenciosas en vez de ruidosas: un regex de validación demasiado permisivo deja pasar datos malos en lugar de rechazarlos de plano. Como cada tarea se cobra por solicitud más por cada ítem de patrón, y una generación fallida nunca se cobra, los equipos pueden generar y verificar de una vez todo un lote de validadores de campos para un constructor de formularios, o los patrones de análisis para un flujo de ingesta de logs, en lugar de escribir y probar cada uno a mano.
Casos de integración
Buscar y reemplazar en un script de migración
Un script de migración de código genera un patrón preciso para encontrar la firma de una llamada de API en todo un repositorio antes de un cambio masivo de nombre.
Preguntas técnicas
¿Cómo genero un regex con la API?
Envíe una descripción en lenguaje simple del patrón por POST a /dev/regex-generate, guarde el task_id devuelto y reciba la expresión con sus casos de prueba por webhook o mediante un enlace firmado válido por 24 horas.
¿Es gratis la API para generar regex?
No, no hay plan gratuito ni prueba; cuesta $0.003 por solicitud más $0.0135 por ítem, y una generación fallida nunca se cobra.
¿Ya está disponible este endpoint?
Sí, /dev/regex-generate está activo y aceptando solicitudes ahora mismo.