Eliminar líneas que coinciden con regex
Filtre líneas por patrón: con ^DEBUG\b, un registro de cinco líneas pierde sus 2 líneas DEBUG y conserva intactas las 3 de INFO y ERROR. Además, ve cuántas líneas se quitaron y cuántas quedaron. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Patrón
- ^DEBUG\b
- Texto
- INFO Server started ERROR Connection lost INFO Server ready
- Cantidad eliminada
- 2
- Cantidad conservada
- 3
Eliminar líneas que coinciden con regex filtra texto multilínea evaluando cada línea por separado con una expresión regular y descartando todas las coincidencias. Resulta útil cuando las líneas que usted desea quitar comparten un patrón, como un nivel de registro, un comentario generado, una marca de tiempo, un prefijo identificador o un tipo de registro estructurado. El resultado conserva exactamente cada línea restante, incluido su final original, e indica cuántas líneas se eliminaron y conservaron para que los procesos automáticos puedan comprobar el cambio.
Escriba un patrón para la línea completa que desea eliminar
Introduzca el origen en text y una expresión regular de JavaScript en pattern. Escriba la expresión sin barras delimitadoras: por ejemplo, use <code>^DEBUG\b</code> y no <code>/^DEBUG\b/</code>. Cada línea se evalúa por separado y se elimina si alguna parte coincide.
Añada <code>^</code> cuando el texto deba aparecer al principio, <code>$</code> cuando deba estar al final y ambos anclajes cuando toda la línea deba cumplir la regla. Un patrón como <code>^\s*#</code> elimina las líneas cuyo primer carácter no vacío es una almohadilla, mientras que <code>temporary$</code> elimina las que terminan con esa palabra. La comparación distingue mayúsculas y minúsculas y sigue la sintaxis estándar de JavaScript.
Empiece con una expresión precisa, revise los recuentos y el texto filtrado, y amplíela solo cuando el resultado confirme que seleccionó las líneas previstas.
Comprenda qué ocurre con los finales y las líneas vacías
El filtro reconoce saltos de línea de Unix, pares de retorno de carro y salto de línea de Windows, y retornos de carro independientes. Conserva el final original unido a cada línea restante, por lo que una entrada mixta o propia de una plataforma no se normaliza silenciosamente. La expresión regular se evalúa únicamente contra el contenido de la línea; los caracteres de salto no forman parte de la coincidencia.
Las líneas vacías son líneas reales y pueden eliminarse con <code>^$</code>. Si el origen termina con un salto, el delimitador permanece unido a la línea anterior conservada salvo que esta también se elimine. Por ello, quitar la última línea sin terminador puede dejar intacto el delimitador anterior, reflejando fielmente los bytes de la línea retenida.
Un origen vacío cuenta como una línea vacía. No se recorta texto, no se cambia entre mayúsculas y minúsculas ni se limpia el espacio.
Use el filtrado determinista con seguridad
Esta capacidad sirve para preparar datos antes de compararlos, indexarlos, revisarlos o importarlos. En registros, usted puede retirar comprobaciones de estado conocidas o prefijos de gravedad ruidosos antes de entregar los sucesos relevantes a un analista. En código generado, puede descartar comentarios de cabecera estables antes de comparar compilaciones.
En exportaciones estructuradas, puede quitar registros cuyo prefijo identifique una cabecera, un pie o una categoría no deseada. Como el mismo algoritmo determinista funciona sin acceso a la red, llamadas repetidas con la misma entrada producen idéntico resultado. La expresión se compila una vez, aunque los patrones con repeticiones anidadas ambiguas pueden resultar costosos.
Prefiera expresiones específicas y ancladas para entradas grandes. Revise el texto y use los recuentos como protección automática; por ejemplo, detenga un despliegue si una limpieza prevista para una línea informa de cientos.
Qué puede hacer con ella
Eliminar entradas ruidosas de registros
Descarte líneas recurrentes de depuración, estado o supervisión sin perder los sucesos que requieren análisis.
Limpiar texto fuente generado
Quite comentarios de cabecera, marcas del generador o líneas propias del entorno antes de revisar diferencias relevantes.
Filtrar registros orientados a líneas
Excluya cabeceras, pies, comentarios o prefijos no deseados de una exportación antes del siguiente proceso.
Preguntas frecuentes
¿Qué sintaxis de expresión regular utiliza?
Utiliza la sintaxis de expresiones regulares de JavaScript. Proporcione el patrón sin barras delimitadoras.
¿El patrón incluye el carácter de salto de línea?
No. Cada expresión se evalúa contra el contenido de una línea y excluye su terminador.
¿Las líneas coincidentes se sustituyen por líneas vacías?
No. Se eliminan las líneas coincidentes y sus terminadores; las demás se devuelven sin cambios.
¿Puede eliminar líneas vacías o compuestas solo por espacios?
Sí. Use ^$ para líneas vacías o ^\s*$ para aquellas que contienen únicamente espacios.
¿Cómo elimino solo las líneas que empiezan por una palabra?
Ponga ^ delante de la palabra, como en ^DEBUG. Sin ese signo, se elimina cualquier línea que contenga la palabra en cualquier posición. Además, distingue mayúsculas de minúsculas: DEBUG y debug no son lo mismo.
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/str/remove-lines-matching \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"INFO Server started\nDEBUG Cache miss\nERROR Connection lost\nDEBUG Retrying\nINFO Server ready","pattern":"^DEBUG\\b"}'const res = await fetch("https://api.kit.forhosting.com/str/remove-lines-matching", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "INFO Server started\nDEBUG Cache miss\nERROR Connection lost\nDEBUG Retrying\nINFO Server ready",
"pattern": "^DEBUG\\b"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/remove-lines-matching",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "INFO Server started\nDEBUG Cache miss\nERROR Connection lost\nDEBUG Retrying\nINFO Server ready",
"pattern": "^DEBUG\\b"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/remove-lines-matching", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"INFO Server started\\nDEBUG Cache miss\\nERROR Connection lost\\nDEBUG Retrying\\nINFO Server ready","pattern":"^DEBUG\\\\b"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"INFO Server started\nDEBUG Cache miss\nERROR Connection lost\nDEBUG Retrying\nINFO Server ready","pattern":"^DEBUG\\b"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/remove-lines-matching", 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": "INFO Server started\nDEBUG Cache miss\nERROR Connection lost\nDEBUG Retrying\nINFO Server ready",
"pattern": "^DEBUG\\b"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.remove_lines_matching",
"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. |
Notas técnicas
Escriba un patrón para la línea completa que desea eliminar
Los escapes dentro de JSON siguen las reglas habituales de JSON, por lo que una barra inversa se representa dos veces en una solicitud sin procesar.
Comprenda qué ocurre con los finales y las líneas vacías
La respuesta incluye removed_count y kept_count, de modo que un script puede rechazar una modificación demasiado amplia.
Use el filtrado determinista con seguridad
Una sintaxis no válida se rechaza como <code>invalid_input</code> en lugar de devolver texto parcialmente filtrado. Cada solicitud API cuesta $0.002; la versión del navegador se ejecuta localmente.
Preguntas técnicas
¿Qué sucede si el patrón no es válido?
La solicitud falla con un error invalid_input que identifica el patrón como expresión regular no válida.
¿Cuánto cuesta una solicitud API?
Cada solicitud API cuesta $0.002. El filtrado interactivo también está disponible en el navegador.